将历史记录从SVN导入/导出到TFS
是否有任何导入和导出工具可让我们使用完整的历史记录和日志将项目移入或者移出团队系统?我们当前的SCM是SVN。
PS对不起,我知道这是转贴,但我之前没有得到答案... :)
解决方案
不幸的是,我们可能没有得到答案,因为没有一个好的答案。
我之前已经研究过几次,最初是针对第一个TFS Beta。
(当时我们渴望在等待TFS准备就绪时离开VSS。最终的折衷是在过渡期间使用SVN,但使用了后提交钩子来保持VSS存储库同步以允许该迁移路径到TFS。)
这些家伙(ComponentSource)当时使用VSS到TFS转换器,并在TFS中添加了SVN,但此后似乎已经停止生产该产品。
这些人(Kyrosoft)可能会有一些希望,但我担心他们不会发布价格,而是发布客户清单(两个)。如果有人对产品有经验,请告诉我们。
最近,TFS迁移和同步工具包已在CodePlex上发布,但迄今为止,还没有人为其发布SVN插件(该请求获得66票)
因此,我们可以考虑为工具包滚动自己的插件,但是即使那样,我们也无法获得原始的提交日期,据我所知,TFS团队不允许进口商使用此机制进行设置,因此所有人员都迁移了修订版将包含迁移日期。
(据称上面已停产的第一个工具曾经允许这样做,但是它们如何绕过限制(秘密API?调整系统时间?数据库操作?)我不知道。)
最后,我怀疑大多数团队最终决定只在适当的时间切换系统(例如新版本或者项目),并手动处理6到12个月的分叉历史记录,这仍然是个问题。
只是在这里大声思考,但是SVN是否支持一种"回放"其历史的方式?如果有一种方法可以从现有存储库中生成一套完整的SVN命令,则可以将这些命令提供给SvnBridge,后者实际上正在写入TFS。
使用KryoSoft。 ComponentSource基本上已经倒闭了。
我不知道我们是否仍然有兴趣,但是我只是和我现在的老板一起经历过(我的项目使用的是SVN,他们想将其迁移到另一个站点的TFS中)。
这些是我使用的以下步骤:
- 在我们当前的仓库上运行svndump,并将文件带到预期的目标
- 使用svn服务器(例如本地存储库)导入文件-为此,我使用了VisualSVN服务器。
- 将SVN存储库检出到本地目录(例如
svn co <url> Proj_SVN
) - 在同一台计算机上运行SvnBridge(来自CodePlex)
- 将TFS存储库检出到本地目录(例如
svn co http:// localhost:8080 / <tfs_server> / <project_repo_path> Proj_TFS
) - 使用Svn2Svn(从codeplex)运行以下命令:svn2svn / s:c:\ temp \ src \ Proj_SVN / d:c:\ temp \ src \ Proj_TFS / r:<start_rev>:<end_rev>`
取决于有多少修订版本,拥有多少数据以及网络的速度(例如,在TFS服务器上运行可能更快),可能需要10分钟以上的时间才能完成每个修订版本。
无论如何,这就是我使用的方法,并且对我有用(尽管过程很痛苦……),但方法可能会有所不同。