我的团队大约一年前被迫从SVN迁移到RTC Jazz scm。因为我们对RTC非常不满意,所以我们决定放弃它并切换到Git进行版本控制。
我一直没有找到很多关于从RTC迁移出来的信息,但我确实发现了这个Rational Adapter for Git(我不确定是否可以用于此类迁移)。
迁移源代码并将历史记录从RTC爵士乐改为Git的最佳方式是什么?
答案 0 :(得分:15)
由于我们遇到了同样的问题并且我们希望保留历史记录,因此我们开始创建一个python脚本,该脚本自动执行将RTC SCM Stream by Stream迁移到GIT的过程。
脚本可以在这里找到: https://github.com/rtcTo/rtc2git
该程序如何工作的一些细节 - 它基于RTC CLI。
对于每个流,将创建一个分支
基本上就是这样。如果你愿意,我也可以提供一些示例命令,这些命令帮助我获得必要的信息(关于RTC CLI的特定信息,信息很少见。)
编辑:我认为该程序的当前版本是稳定的。所以试试吧。 :)我欢迎任何反馈。
答案 1 :(得分:7)
我测试了适配器,我确认它不适用于迁移。它用于链接git提交和RTC更改集。
迁移本身是有限的,只涉及源代码控制部分,而不涉及工作项或构建。
我通常将repo工作区设置为最后几个基线并将它们导入到git工作树中。我不会导入作者姓名。
导入利用了git
command的--git-dir
和--work-tree
选项。
(如this answer或this one)
您可以从任何地方打字:
git --work-tree=/path/to/sandbox --git-dir=/path/to/repo/.git status|add|...
首先尝试状态,以查看要导入的内容。您可以在/path/to/repo/.git/exclude
文件中添加一些要从您不想要的导入元素中排除的模式(例如.jazz5
文件夹!)。
当然,/path/to/sandbox
可以是该沙箱中的任何子文件夹:您不必导入所有内容。
使用相同的沙箱重复该过程,使用不同的基线/快照进行更新,从最旧到最新。
这给了一个粗略的历史,这足以开始。
答案 2 :(得分:4)
我有同样的工作,即将包含多个组件的整个流转换为单独的git存储库。在尝试上面提到的python脚本之后,我发现它太复杂了(例如,选择eclipse中的所有URL来创建历史文件,搜索基线等)并且根本不可靠。至少不适用于具有超过4000个变更集的组件。
所以我在Perl中编写了另一个脚本,它几乎开箱即用,至少在Windows 7.0上是这样。该脚本包含了scm中所有这些bug的大量变通方法,因此您不必为此烦恼。
它完成了它的工作,也许它可以帮助你。
拉尔夫