10

最近一段时间我一直在玩 SVN,并且开始喜欢它的强大功能和用户体验,并且我们可以将它与我们的错误跟踪系统联系起来以简化每个人的生活。所以到了我们决定将我们的 VSS 2005 设置迁移到 SVN 的时候了,我现在要解决问题了。

似乎有许多工具声称能够完成从 VSS 2005 到 SVN 的迁移,但我不知道哪个是最好的,或者哪个可以为我提供最完整的转换。我需要一个能够迁移完整历史记录的工具,而不仅仅是从 VSS 中检出并检入 SVN。

我发现 Polarion SVN Importer 看起来既强大又高度可配置,但是,我无法让该死的东西工作,它抱怨它无法从 VSS 中的 $/ 中提取文件列表。如果我运行它手动触发的相同命令,一切似乎都运行正常,所以我无法弄清楚。

有没有人成功地将他们的源代码从 VSS 2005 迁移到 SVN,如果是,您使用了哪些工具,您的发现是什么?任何警告或陷阱都是最有用的,因此要知道任何有用/令人惊讶的或令人失望的或只是被歪曲的东西。

4

5 回答 5

6

尝试 Codeplex 上 VssMigrate 的最新主干(控制台应用程序)修订版,以重新排序您的历史记录并从您的 VSS 存储库重新生成变更集。它还将根据签入的时间正确排序您的修订。

http vssmigrate.codeplex.com/SourceControl/changeset/view/16890

我希望这有帮助。可能需要对 $/ 导入进行一些调整。

PS历史可以帮助您一步一步知道该怪谁,而不必根据导入来发现注释是否正确,所以我觉得它非常有用。在旧代码中发现错误时,拥有它比没有它要好得多。

PPS 您甚至可以使用新版本的 VssMigrate 将修订重新导入到 subversion 存储库,然后在从先前修订的最后一个导入修订之后合并所有修订。唯一的缺点是每个人都必须从存储库中重新签出,因为修订的数量将大大减少。基本上,执行新的迁移;svnadmin 将活动的先前从 rev migrated+1 迁移的存储库作为增量转储,然后将 svnadmin 加载到新迁移的存储库中。

于 2009-05-24T12:59:07.457 回答
4

大约一年前,我尝试了 Polarion 和 vss2svn。

我们在VSS里有很多年的代码,经过所有的配置和测试,我发现对结果并不完全满意,过程又长又脆弱,最后决定从干净的导入开始的最新代码。

去年有几次我去寻找古老的历史,但不是那么多。重新开始的另一个好处是您的新 SVN 存储库将非常快!

于 2009-05-15T19:31:44.190 回答
3

我最后一次尝试这个是几年前。由于没有记录 VSS 文件格式,为了获得完整的历史记录,第 3 方转换程序必须使用 VSS 的 API 来获取每个文件的每个版本。我让这个转换在周末运行,看看它已经完成了多少(百分之几),并计算出它需要几周的日历时间才能完成(我们有多年的历史)。

因此,我们决定仅将最新代码的快照移动到新版本控制系统中,并为历史记录保留 VSS 数据库的存档。

于 2009-05-15T19:19:27.980 回答
2

类似于这个问题 - 不同的迁移,但我也认为尝试捕捉历史是浪费精力/时间。

从 SourceSafe 迁移到 ClearCase 的最佳方式是什么?

于 2009-05-15T19:22:49.330 回答
2

几个月前,我成功地将 VSS 2005 迁移到 SVN。我使用了“VssMigrate.Tim2”工具,该工具现在显然在 CodePlex 上作为vssmigrate。它运行良好,没有重大问题。看起来修订和时间戳的顺序并不像我预期的那样,但这没什么大不了的。

编辑:使用 vssmigrate,您可以选择迁移特定的 VSS 路径(例如 $/GroupA/ProjectB),从而减少单独迁移的时间并使整个过程不那么脆弱。尽管我们在 VSS 中只有大约六个月的数据,但我并没有发现这个过程太长。我设法在一个周末完成了迁移和 Apache+SVN 设置。根据您的 VSS 存储库的大小,您可能希望创建多个 SVN 存储库而不是一个庞大的单个存储库。

我非常高兴我们离开了 VSS,尽管配置 Apache+SVN 并不是很有趣(反复试验)。我正在考虑使用GitMercurial,但当时都没有可靠的 TortoiseXxx 工具或 VS SCC 插件。虽然现在Google 代码已经支持 Mercurial 并且TortoiseHg看起来不错,但我很想尽快尝试 Mercurial。

于 2009-05-15T19:23:43.727 回答