-1

我需要删除一个 svn 服务器才能用 tfs 2018 服务器替换它。如果它按照我的方式进行,我们只会获取文件,但显然人们仍然希望能够查看历史记录和以前的签到。我们决定创建两个项目集合。一个只读的,您可以在其中查看以前的签入,称为 [Product]GitCollection 和一个人们应该在其中工作的集合,称为 [Product]Collection。计划是从旧的 svn 存储库中创建一个 git 存储库,并将其托管在只读的 [Product]GitCollection 中。简短的信息。svn repo 的大小约为 22GB。

这就是问题开始的地方。将 svn 存储库移动到新的 git 存储库时,我遇到了很多问题。我正在遵循 msdn 指令。 https://docs.microsoft.com/en-us/vsts/articles/perform-migration-from-svn-to-git 他们非常好,我能够解决作者文件的一些问题(错误的编码等。 )。但是现在我处于执行 git svn 命令的状态,并且他在“初始化 C:/LowBudgetCopy/.git/ 中的空 Git 存储库”之后卡住了

git控制台

没有消息。现在40分钟什么都没有。我高度怀疑他有一些问题,但我无法在新生成的 git 存储库中找到日志文件。我也认为它与命令--stdlayout有关。如果我不通过标准布局命令,他至少可以复制文件(带有很多错误日志)。我对 svn 或 git 的标准或必需的文件夹布局并不那么坚定。当前svn包含多个项目,文件夹结构本身似乎不一致。

目前 svn 存储库包含 4 个主文件夹,它们的结构如下:

  • /档案
  • /存档/ctb
  • /存档/ctb/分支机构
  • /存档/ctb/标签
  • /存档/ctb/trunk
  • ...
  • ...
  • ...(存档文件夹非常一致。存档中的每个项目都具有相同的结构)
  • /固件
  • /固件/CNC
  • /固件/CNC/部署
  • /固件/CNC/文档
  • /固件/CNC/源
  • /固件/CNC/源/分支
  • /固件/CNC/来源/标签
  • /固件/CNC/源/主干
  • /固件/CNC/工具
  • ...
  • ...
  • ...(固件文件夹中的项目与存档中的项目具有不同的深度,但与固件中的所有其他项目一致。)
  • /服务器
  • /服务器/部署
  • /服务器/文档
  • /服务器/源
  • /服务器/源代码/控制
  • /服务器/源/控制/分支
  • /服务器/源/控制/主干
  • /服务器/源/设备
  • /服务器/源/设备/分支
  • /服务器/源/设备/主干
  • ...
  • ...
  • ...
  • /工具
  • /工具/部署程序/
  • (直接解决。没有主干,没有分支文件夹)
  • /工具/FtpTester
  • /工具/FtpTester/源
  • /工具/FtpTester/源/Trunc
  • ...
  • ...
  • ...(在工具文件夹中不一致。)

有人有提示或想法吗?

4

1 回答 1

0

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

有很多称为svn2git的工具,可能最好的是来自https://github.com/svn-all-fast-export/svn2git的 KDE 工具。我强烈建议使用该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-01-10T15:50:58.403 回答