git cvsimport失败:无法将master合并到当前分支中

时间:2014-03-14 15:44:28

标签: git migration cvs

我正在尝试导入一个在cvs中长达数年的项目。它有一些分支用于补丁发布,标签和头部。 这是我正在使用的命令:

 git cvsimport -r cvs -k -d :pserver:<USERNAME>@cvs:/home/cvsroot <MODULNAME>

几周前它完美无缺。几天前,为当前版本创建了一个分支,人们仍然在这个分支中工作,而其他人已经在为下一个里程碑工作。这个分支稍后将合并到头部。

此过程暂时失败,并在下面显示以下消息:

fatal: Needed a single revision
fatal: Can merge only exactly one commit into empty head
Could not merge master into the current branch.

可能是什么原因?我怎么处理呢?

2 个答案:

答案 0 :(得分:1)

我发现了一种解决方法,即不导入可追溯到2006年的整个历史记录。 这是我的程序:

  • 创建新的git存储库
  • 触摸新文件
  • 使用日期开关
  • 添加并提交该文件
  • 执行cvs import

以下是涉及的命令:

mkdir project.cvs    
mkdir project.git    
cd project.git
git init
touch test
git add test
git commit -m "initial" --date="2010-01-01 00:00:00"
cd ../project.cvs
git cvsimport -o master -C ../project.git -k -d :pserver:<USERNAME>@cvs:/home/cvsroot <MODULENAME>

在我的情况下花了一段时间,但随着我回到git repo,自2010年以来的历史可用。

答案 1 :(得分:0)

我发现这个有用:

$ cvs -d :pserver:anonymous@example.org:/path/to/cvsroot login
$ git-cvsimport -v -a -i -k -d pserver:anonymous@example.org:/path/to/cvsroot -C <git_repository> <cvs_module>

命令行参数是:

-v: verbose; report a lot of information about what's going on
-a: import all commits, not just recent ones
-i: import-only. don't mess with working directory
-k: 'kill keywords': no CVS keyword expansion (e.g. $Date$)
-d: root of cvs archive (you could also set CVSROOT if you really wanted to)