在CVS中使用git的最佳实践
使用git与CVS存储库进行交互的最佳实践和技巧是什么?
我在这里写了一个类似问题的答案。
当您不得不继续将更改推送到中央CVS存储库时,这种方式非常出色。
我只使用Git-CVS交互来为朋友演示Git,但它非常简单。
- 您需要安装
cvsps
的当前副本。Git cvsimport
使用它来访问CVS历史logging。 -
我们发现,对于一个大型项目,通过将CVS回购的完整副本放到您的计算机上,并在本地执行
git cvsimport
,初始设置要快得多:$ rsync rsync://yourprojecthost.com/cvsroot/yourproject/* $ mkdir myproject.git $ cd myproject.git $ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject
请注意,-x之后的-p非常重要。 这将-x传递给cvsps。 欲了解更多信息,请参阅cvsps手册页 。
我写了我自己的远程CVS,本地Git的工作stream程的细节
稍微元回答。 如果你被迫使用git'guerilla style',也就是说你的公司使用cvs来进行版本控制,并且在你的工作站上使用git来简化生活,你可能会考虑这样做。
CVS=realCvsPath # commit to the git first if ($ARGV[0] && $ARGV[0] eq "commit") { system 'git commit -a'; } # execute the appropriate cvs program # =================================== exec "$CVS", @ARGV
调用这个文件'cvs'并在真正的CVS命令之前包含它的path。 否则,你可以让git提交的比cvs更早,这是没有用的…
如果上游在CVS(例如OpenBSD,或许多像mdocml或ports- readmes这样的许多子项目)中是100%的,尤其是像OpenBSD CVS树一样生锈(例如,偶尔甚至有历史重写),我发现将底层的CVS/{Entries,Repository,Root}
文件直接提交到我的git
仓库中是非常有用的。
这使得不必拥有多个独立的工作空间变得非常容易,可以在任何机器上使用git
进行签出,然后使用cvs up
,或者使用cvs diff
生成正确的CVS补丁,以便向上游的less量维护人员发送邮件。