Skip to content

git-cvsexportcommit

命令名称 - 将单个提交导出到 CVS 检出

概要

bash
[verse]
'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 - 如果补丁干净地应用则自动提交。如果任何块应用失败或存在其他问题,则不会提交。

  • -p - 应用补丁时严格(偏执)。以 --fuzz=0 调用 patch。

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

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

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

  • -P - 强制父提交,即使它不是直接父级。

  • -m - 在提交消息前加上提供的前缀。对补丁系列等很有用。

  • -u - 在尝试导出之前从 CVS 仓库更新受影响的文件。

  • -k - 在应用补丁之前反转 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 仓库内:

    $ 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) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布