0

我试图svn2git测试从 svn 到 git 的迁移,如下所示:

svn2git https://my-svn.net/project/ --username $USERNAME

我在安装了 git 的地方执行这个命令。我在/home/myuser/svn2git/. 在等待命令的执行结束后:

...
A   src/xx
A   src/xx
A   src/xx
A   src/xx

我没有看到存储库被下载到我运行此命令的位置。命令运行正常后,如果我提交并推送到 GIT,我看不到任何提交。我看到 .git 文件夹被创建,并且在显示上我可以看到我所有的历史记录。

谁能告诉我这里有什么不正确的地方?

4

1 回答 1

-1

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

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

您使用的svn2git工具(nirvdrum 工具)基于git-svn并且只是试图解决一些怪癖和缺点。因此,该svn2git工具具有大多数相同的缺点。

您将能够轻松配置svn2gits 规则文件以从当前 SVN 布局中生成所需的结果,包括可能存在的任何复杂历史记录,包括从一个 SVN 存储库生成多个 Git 存储库或将不同的 SVN 存储库干净地组合到一个 Git 存储库中如果您愿意,可以在一次运行中排除任何您没有迁移的路径、分支或标签,尽管如果有人丢弃了宝贵的代码历史,我总是会有点哭泣。

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


尽管git-svnnirvdrumsvn2git更容易上手,但除了灵活性之外,还有一些使用 KDEsvn2git代替KDE 更优越的原因:git-svn

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

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

于 2018-02-17T10:04:56.497 回答