2

多年来,我们一直使用 SVN 作为我们的存储库,并且我们希望迁移到 Git。2015 年,有人对我们的一个存储库进行了更改。他在存储库中创建了一个单独的文件夹(带有一个子文件夹),位于同一文件夹层次结构级别,如/trunk,/branch/tags. (见项目A)

svnroot/
|-- projectA
    |-- branches
    |-- tags
    |-- trunk
    |-- new folder
        |-- subfolder
            |-- branches
            |-- tags
            |-- trunk
|-- projectB
    |-- branches
    |-- tags
    |-- trunk
|-- projectC
    |-- branches
    |-- tags
    |-- trunk

他已将一些部件从/trunk其他文件夹移至此新文件夹。当我现在查看新文件夹的历史记录时,我只看到自新文件夹创建以来的历史记录,但新文件夹中移动项目的历史记录似乎是完整的。在迁移之前我是否需要在 SVN 中修复它,如果需要,我该如何解决?或者我必须在迁移方面做一些特别的事情吗?

4

1 回答 1

1

git-svn不是一次性转换存储库或存储库部分的正确工具如果您想使用 Git 作为现有 SVN 服务器的前端,这是一个很棒的工具,但对于一次性转换,您不应该使用git-svnsvn2git它更适合这个用例。

有很多称为svn2git的工具,可能最好的一个是来自https://github.com/svn-all-fast-export/svn2git的 KDE 工具。我强烈建议使用该svn2git工具。这是我所知道的最好的,并且在你可以用它的规则文件做什么方面非常灵活。

您将能够轻松地配置svn2git规则文件以生成您想要的历史结果,或者将所有 SVN 子存储库集成到一个 Git 存储库中,或者将您的项目从 SVN 拆分到多个独立的 Git 存储库。

如果您不是 100% 了解存储库的历史,那么在将 SVN 存储库迁移到 Git 时,svnevereverhttp ://blog.hartwork.org/ ?p=763是一个调查 SVN 存储库历史的好工具。


尽管git-svn更容易开始,但除了灵活性之外,还有一些使用 KDEsvn2git而不是更优越的原因:git-svn

  • 通过(如果使用正确的),历史被重建得更好,更清晰,svn2git对于具有分支和合并等的更复杂的历史尤其如此
  • 标签是真正的标签,而不是 Git 中的分支
  • 标签包含git-svn一个额外的空提交,这也使它们不是分支的一部分,所以在fetch你给命令之前正常不会得到它们,--tags因为默认情况下只有指向已获取分支的标签也会被获取。使用正确的 svn2git 标签是它们所属的地方
  • 如果您更改了 SVN 中的布局,您可以轻松地配置它svn2gitgit-svn最终您将失去历史
  • 您还可以轻松地svn2git将一个 SVN 存储库拆分为多个 Git 存储库
  • 或轻松将同一个 SVN 根目录中的多个 SVN 存储库合并到一个 Git 存储库中
  • svn2git正确的转换比使用正确的要快无数倍git-svn

有很多原因导致git-svnKDE 更差,而 KDEsvn2git更胜一筹。:-)

于 2017-01-26T14:27:52.913 回答