在保留历史记录的同时从 VSS 迁移到 Git

Migrating from VSS to Git while keeping the history

我正在尝试将 Visual SourceSafe 存储库转换为 Git,同时保留准确的版本历史记录。所以我尝试使用 https://github.com/trevorr/vss2git. It worked, but it didn't keep the history. So I tried using TFS as a middleman. I used The latest version of TFS and its upgrade wizard but it didn't keep the history, so I tried with TFS 2013 () 及其升级向导,但仍然没有历史记录。我现在很绝望,我不知道问题出在哪里,因为我什至分析了我的 VSS 存储库,也没有发现错误。我读到我也可以尝试使用 SVN 作为中间人,所以我会这样做,但我持怀疑态度。

您可以尝试https://github.com/azarkevich/VssSvnConverter,但它不是用户友好的。 (尽管它的名字可以将 VSS 转换为 Git)

此外,此工具不会保留 file/directory moves/renames 的历史记录。文件将具有最新名称的历史记录。

我找到了解决方案,我使用的程序确实有效。只是我试图移动太多数据,所以它只会出现故障而不会存储历史记录。我不确定我可以安全移动的数据量,但我现在有一个历史记录

这是几年前对我有用的解决方案。当我尝试提到的 vss2git 时,它已经在一个周末内将我们的 9GB vss 数据库炸毁了 103GB 而没有到达终点。 所以我把 TFS 服务器 (2010) 作为中间人,它起作用了。 TFS 2010 可以直接导入 VSS 数据库,我不确定更新的。同时,TFS 可以使用 git-tf 或 git-tfs 作为 git 远程。导入之后,简单的git tfs clone就完成了第二部分的业务。所以给你:

  1. 获取支持 VSS 导入的 TFS 版本。这个link可以帮到你。
  2. 使用向导或命令行导入您的 VSS 数据库。
  3. here
  4. 获取git-tfs
  5. (可选)修复提交日期 - 见下文。
  6. 做这样的事情git tfs clone http://tfs:8080/tfs/DefaultCollection $/some_project

我记得的唯一怪癖是 TFS 将所有提交的日期设置为当前日期,并将原始 vss 日期放入注释中。我已经在 TFS 的 SQLEXPRESS 数据库中直接修复了这个问题,如下所示:

UPDATE tbl_ChangeSet 
SET CreationDate =  CONVERT (datetime, Substring(Comment,2,19), 104)
Where CreationDate > '2014-01-28' AND Comment LIKE '{%'

请将您自己的日期(最后一次 VSS comit)放入查询中。

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/ms253060(v=vs.120)