在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量维护人员发送邮件。