确定cvs2git如何转换CVS树



我成功地将一个有八年历史的包含单个CVS项目的CVS主树转换并导入到git中。我正试图弄清楚cvs2git转换对各个CVS存储库做了什么。

幸运的是,我仍然有主CVS树,并且没有部署任何东西,所以我可以再次这样做。我正在寻找git命令,它可以让我探索我转换了什么,这样我就可以判断我是否应该分别转换每个CVS存储库。

您可以通过针对其中一个子项目发布git log来验证cvs2git的作用:

git log -- <directory>

如果该命令返回完整的历史记录,cvs2git会将所有子项目合并为一个子项目。根据你的评论,情况似乎是这样的。

你现在有一个选择:拆分回购还是合并回购?这并不总是一个明确的决定,在CVS中中断回购的动机与在git中不同。

我建议您试用新的git存储库几周,不要将其拆分为子模块、子树或嵌套存储库。这将使您熟悉常见的git命令,并让您尝试一些很棒的git功能,如git bisect,这些功能在嵌套项目时更难使用。此外,我怀疑您会发现,与CVS相比,分支和特别是合并非常简单。可能根本不需要断开存储库。

如果你决定要这样做,请阅读该主题的其他答案。拆分回购本身很容易。下面是github的一个简单教程。在谷歌上快速搜索会发现更多。

我刚刚使用cvs2git转换了一个有八年历史的CVS存储库。我发现在生成的存储库中使用"gitk-all"可以让我很好地掌握转换是如何进行的。所以,我向你建议这个命令。

然而,我没有将整个CVS回购转换为单个Git回购。事实上,我的CVS repo中有几个不同的项目。每个项目都在不同的目录中。因此,我执行了几个转换,每个项目一个。您只需将cvs2git指向您感兴趣的CVS repo的特定子目录。它将把目录历史转换为Git存储库。因此,我最终得到了几个Git repos,每个项目一个,这为每个存储库提供了更好的历史记录。我建议你也试试这种方法。

最新更新