49

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

4

5 回答 5

22

我在这里写了一个类似问题的答案。

当您被迫继续将更改推送到中央 CVS 存储库时,此方法的效果非常好。

于 2009-03-02T19:12:20.623 回答
11

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

  • 您需要安装cvsps. Git cvsimport使用它来访问 CVS 历史记录。
  • 我们发现,对于一个大型项目,通过将 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 
    

请注意,-p 之后的 -x 非常重要。这会将 -x 传递给 cvsps。有关详细信息,请参阅cvsps 手册页

于 2009-02-27T17:12:24.103 回答
8

我为远程 CVS、本地 Git编写了我自己的工作流程的详细信息

于 2010-07-02T13:59:10.177 回答
1

稍微元答案。如果你被迫使用 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 命令之前的路径。否则你可以让 git 提交比 cvs 更早,这没什么用......

于 2009-06-16T10:53:27.203 回答
1

如果上游在 CVS 中是 100%(例如,OpenBSD,或其许多子项目,如mdocmlports- readmes ),特别是如果它像 OpenBSD CVS 树一样生锈(例如,有时甚至重写历史),我发现简单地将底层CVS/{Entries,Repository,Root}文件直接提交到我的存储库中非常有用git

这使得不必拥有多个独立的工作区变得非常容易,可以git在任何机器上签出,然后cvs up就位,或者cvs diff生成正确的 CVS 补丁以邮寄给上游的无 git 维护者。

于 2016-06-02T07:16:14.877 回答