1

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

幸运的是,我仍然拥有主 CVS 树并且还没有部署任何东西,所以我可以再次执行此操作。我正在寻找可以让我探索我转换的内容的 git 命令,这样我就可以判断我是否应该分别转换每个 CVS 存储库。

4

2 回答 2

2

您可以通过针对您的子项目之一cvs2git发布来验证所做的事情:git log

git log -- <directory>

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

你现在有一个选择:破坏回购或保持结合?这并不总是一个明确的决定,在 CVS 中破坏 repo 的动机与在 git 中不同。

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

如果您决定要这样做,请阅读有关该主题的其他一些答案。拆分回购本身很容易。这是来自 github的简单教程。一个快速的谷歌搜索会出现更多。

于 2012-08-21T14:26:37.907 回答
1

我刚刚使用 cvs2git 转换了一个有 8 年历史的 CVS 存储库。我发现在生成的存储库中使用“gitk --all”可以让我很好地了解转换是如何进行的。所以,我会向你推荐这个命令。

但是,我没有将整个 CVS 存储库转换为单个 Git 存储库。正如你的,我的 CVS 存储库实际上有几个不同的项目。每个项目都在不同的目录中。所以,我进行了几次转换,每个项目一个。您只需将 cvs2git 指向您感兴趣的 CVS 存储库的特定子目录。它会将目录历史转换为 Git 存储库。所以,我最终得到了几个 Git 存储库,每个项目一个,这为每个存储库提供了更好的历史记录。我建议你也试试这种方法。

于 2012-08-31T14:18:41.900 回答