名称

git-cvsexportcommit - 将单个提交导出到 CVS 检出

概要

git cvsexportcommit [-h] [-u] [-v] [-c] [-P] [-p] [-a] [-d <cvsroot>]
	[-w <cvs-workdir>] [-W] [-f] [-m <msgprefix>] [<parent-commit>] <commit-id>

描述

将 Git 中的提交导出到 CVS 检出,从而更容易将补丁从 Git 存储库合并到 CVS 存储库中。

使用 -w 开关指定 CVS 检出的名称,或者从 CVS 工作副本的根目录执行它。 在后一种情况下,必须定义 GIT_DIR。 请参见下面的示例。

它会尽最大努力做到安全,它会检查 CVS 检出中的文件是否未更改并且是最新的,并且默认情况下不会自动提交。

支持文件添加、删除和影响二进制文件的提交。

如果提交是合并提交,则必须告诉 *git cvsexportcommit* 更改集应该针对哪个父级完成。

选项

-c

如果补丁干净地应用,则自动提交。 如果任何 hunk 应用失败或存在其他问题,则不会提交。

-p

应用补丁时要谨慎(偏执)。 使用 --fuzz=0 调用补丁

-a

添加作者信息。 将 Author 行和 Committer(如果与 Author 不同)添加到消息中。

-d

设置要使用的备用 CVSROOT。 这对应于 CVS -d 参数。 通常用户不想设置此参数,除非以不对称方式使用 CVS。

-f

即使文件不是最新的也强制合并。

-P

强制父提交,即使它不是直接父提交。

-m

在提交消息前加上提供的前缀。 适用于补丁系列等。

-u

在尝试导出之前,从 CVS 存储库更新受影响的文件。

-k

在应用补丁之前,在工作 CVS 检出中反转 CVS 关键字扩展(例如,$Revision: 1.2.3.4$ 变为 $Revision$)。

-w

指定用于导出的 CVS 检出的位置。 如果当前目录位于 Git 存储库中,则此选项不需要在执行之前设置 GIT_DIR。 默认值是 *cvsexportcommit.cvsdir* 的值。

-W

告诉 cvsexportcommit 当前工作目录不仅是 Git 检出,也是 CVS 检出。 因此,Git 将在继续之前将工作目录重置为父提交。

-v

详细。

配置

cvsexportcommit.cvsdir

用于导出的 CVS 检出的默认位置。

示例

将一个补丁合并到 CVS 中
$ export GIT_DIR=~/project/.git
$ cd ~/project_cvs_checkout
$ git cvsexportcommit -v <commit-sha1>
$ cvs commit -F .msg <files>
将一个补丁合并到 CVS 中(-c 和 -w 选项)。 工作目录位于 Git Repo 中
	$ git cvsexportcommit -v -c -w ~/project_cvs_checkout <commit-sha1>
将待处理的补丁自动合并到 CVS 中——仅当您真正知道自己在做什么时
$ export GIT_DIR=~/project/.git
$ cd ~/project_cvs_checkout
$ git cherry cvshead myhead | sed -n 's/^+ //p' | xargs -l1 git cvsexportcommit -c -p -v

GIT

属于 git[1] 套件的一部分

scroll-to-top