如何保持git cvsimport不跳过补丁集?

时间:2009-11-24 17:42:20

标签: git cvs

我正在尝试将cvs模块导入现有的git仓库。如果我导入一个新的仓库,我可以让它正常工作,但是当我尝试导入到现有的仓库时,似乎决定跳过在我最后一次提交给我指定的分支之前的所有补丁集 - O操作。这就是我目前正在尝试的:

git cvsimport -v -p -x -o cvs -d <cvsroot> -k -u <module>

输出的结尾由以下行组成:

skip patchset 26: 1258578534 before 1259081502

如果我删除“-o cvs”,则失败并显示:

Branch 'origin' does not exist. 
Either use the correct '-o branch' option, 
or import to a new repository.

那么,如何让git cvsimport导入所有内容

2 个答案:

答案 0 :(得分:2)

导入新的存储库,将新分支复制到当前存储库中,然后重新编写分支,以便在您已经获得的内容之后,如果这就是您所追求的目标。

或者,如果您尝试通过一次转换模块来复制多模块CVS结帐,则可能需要尝试一次性转换它...

将每个模块转换为git,将每个分支拉入单个存储库然后创建一个提交,每个分支头作为父级,将每个模块放在树中的正确位置。这并不能很好地保留单个模块历史中的并发性。

答案 1 :(得分:2)

诀窍很简单:

  • 自己创建一个新的git存储库(不要让cvsimport这样做)
  • 提交初始提交
  • 设置过去的初始提交方式的日期

因此:

$ mkdir my_repo
$ cd my_repo
$ git init
$ touch test
$ git add test
$ git commit -m "Initial commit" --date="1990-01-01 00:00:00"

现在运行git cvsimport,其中-C标志指向您的git存储库文件夹。 git cvsimport将在分支头部之前跳过带有时间戳的补丁(请参阅-o标志)。