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

时间:2018-09-06 08:20:15

标签: git migration visual-sourcesafe

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是几年前为我工作的解决方案。当我尝试提到的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获取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 '{%'

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

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