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

在保留历史记录的同时从VSS迁移到Git,git,migration,visual-sourcesafe,Git,Migration,Visual Sourcesafe,我正在尝试将Visual SourceSafe存储库转换为Git,同时保留确切的版本历史记录。所以我试着用。它起作用了,但没有保留历史。所以我试着用TFS做中间人。我使用了最新版本的TFS及其升级向导,但它没有保留历史记录,因此我尝试使用TFS 2013()及其升级向导,但仍然没有历史记录。我现在非常绝望,我不知道问题出在哪里,因为我甚至分析了我的VSS存储库,没有发现任何错误。我已经读到,我也可以尝试使用SVN作为中间商,所以我会这样做,但我对此持怀疑态度。您可以尝试,但它对用户不友好。 (不

我正在尝试将Visual SourceSafe存储库转换为Git,同时保留确切的版本历史记录。所以我试着用。它起作用了,但没有保留历史。所以我试着用TFS做中间人。我使用了最新版本的TFS及其升级向导,但它没有保留历史记录,因此我尝试使用TFS 2013()及其升级向导,但仍然没有历史记录。我现在非常绝望,我不知道问题出在哪里,因为我甚至分析了我的VSS存储库,没有发现任何错误。我已经读到,我也可以尝试使用SVN作为中间商,所以我会这样做,但我对此持怀疑态度。

您可以尝试,但它对用户不友好。 (不管名称如何,它都可以将VSS转换为Git)


此外,此工具不保留文件/目录移动/重命名的历史记录。文件将具有最新名称的历史记录。

我找到了解决方案,并且我使用的程序可以正常工作。只是我试图移动太多的数据,所以它只会出现故障,而不会存储历史记录。我不确定我可以安全地移动多少数据,但我现在有了一段历史

这是几年前对我有效的解决方案。当我尝试上面提到的vss2git时,它在一个周末内将我们的9gbvss数据库扩展到103GB,但还没有结束。 因此,我把TFS服务器(2010)作为中间商,它成功了。TFS2010可以直接导入VSS数据库,我不确定是否有更新的数据库。同时,TFS可以作为使用git tf的git远程服务器,例如git TFS。导入后,simple
git tfs clone
完成了业务的第二部分。那么,给你:

  • 获取能够导入VSS的TFS版本。这可以帮助你
  • 使用向导或命令行导入VSS数据库
  • 从中获取git tfs
  • (可选)修复提交日期-请参见下文
  • 执行类似以下操作
    git-tfs克隆http://tfs:8080/tfs/DefaultCollection $/some\u项目
  • 我能记得的唯一怪癖是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的日期)


    嗯,你请求帮助,然后自己解决了。如何实际分享解决方案,让其他人可以从这个无用的(目前)线程中受益?我也很感兴趣。您迁移了多少有效的数据?不敢相信我还在问关于VSS 6.0d的问题。你保留了你的历史吗?请提供步骤。谢谢。当你需要帮助时,人们会帮助你。现在,当人们需要你的帮助时,帮助他们。向我们展示你是如何做的并分享它。对我来说,我必须修改查询:从tbl_变更集CreationDate=CONVERT(datetime,Substring(Comment,2,PATINDEX('%[~}]]',Comment)-2更新tbl_变更集,其中的注释类似于'{%'