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

Pie*_*etz 8 migration git visual-sourcesafe

我正在尝试将 Visual SourceSafe 存储库转换为 Git,同时保留确切的版本历史记录。所以我尝试使用https://github.com/trevorr/vss2git。它有效,但没有保留历史记录。所以我尝试使用TFS作为中间人。我使用了最新版本的 TFS 及其升级向导,但它没有保留历史记录,因此我尝试使用 TFS 2013(如何将 VSS 2005 迁移到 TFS 2015?)及其升级向导,但仍然没有历史记录。我现在很绝望,我不知道问题出在哪里,因为我什至分析了我的VSS存储库,也没有发现错误。我读到我也可以尝试使用 SVN 作为中间人,所以我会这样做,但我对此表示怀疑。

Thi*_*eye 4

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

  1. 获取能够导入 VSS 的 TFS 版本。这个链接可以帮助你。
  2. 使用向导或命令行导入 VSS 数据库。
  3. 从这里获取 git-tfs
  4. (可选)修复提交日期 - 见下文。
  5. 做这样的事情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 '{%'
Run Code Online (Sandbox Code Playgroud)

请在查询中输入您自己的日期(上次 VSS 提交的日期)。

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

  • 对我来说,我必须将查询修改为: UPDATE tbl_ChangeSet SET CreationDate = CONVERT(datetime, Substring(Comment, 2, PATINDEX('%[~}]%', Comment) - 2) FROM tbl_ChangeSet WHERE Comment Like '{% ' (2认同)