2009-02-27 50 views
48

使用git与CVS存储库交互的最佳实践和技巧是什么?在CVS中使用git的最佳实践

+3

我会试着对SourceSafe提出同样的问题,但我真的不想摆脱(完全按照目标)的嘲笑。 – 2009-02-27 15:17:46

回答

21

我写了一个类似问题的答案here

当您被迫继续将更改推送到中央CVS存储库时,这种方法非常有效。

11

我只使用Git-CVS交互来为朋友演示Git,但它非常简单。

  • 您需要安装cvsps的当前副本。 Git cvsimport使用它来访问CVS历史记录。
  • 我们发现,对于大型项目,inital的建立是更快地取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 after -p非常重要。这将-x传递给cvsps。欲了解更多信息,请参阅cvsps man page

+1

我认为有错误/在第3步。 – 2009-03-01 03:22:56

+2

@PeterBurns:那是...它应该是`git cvsimport -p -x -v -d:local:/ path/to/cvsroot yourproject` – Archenoth 2014-06-04 15:39:25

1

稍元回答。如果你被迫使用git'游击风格',即你的公司使用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命令之前的路径。否则,你可以让Git提交比CVS的,这是不是有用旧的......

1

如果上游在CVS 100%(例如,OpenBSD的细节或许多子项目,如mdocmlports-readmes),尤其是如果它与OpenBSD CVS树一样生锈(例如偶尔甚至有历史重写),我发现将基本CVS/{Entries,Repository,Root}文件直接提交到我的git库。

这使得它非常容易不必有多个独立的工作空间,使人们有可能在任何机器上git签,然后在地方cvs up,或cvs diff产生正确的CVS补丁邮寄到GIT,少维护上游。