如何从RTC Jazz迁移到Git?

时间:2014-05-29 08:26:05

标签: git version-control rtc

我的团队大约一年前被迫从SVN迁移到RTC Jazz scm。因为我们对RTC非常不满意,所以我们决定放弃它并切换到Git进行版本控制。

我一直没有找到很多关于从RTC迁移出来的信息,但我确实发现了这个Rational Adapter for Git(我不确定是否可以用于此类迁移)。

迁移源代码并将历史记录从RTC爵士乐改为Git的最佳方式是什么?

3 个答案:

答案 0 :(得分:15)

由于我们遇到了同样的问题并且我们希望保留历史记录,因此我们开始创建一个python脚本,该脚本自动执行将RTC SCM Stream by Stream迁移到GIT的过程。

脚本可以在这里找到: https://github.com/rtcTo/rtc2git

该程序如何工作的一些细节 - 它基于RTC CLI。

  1. 它在一个空的git存储库中克隆它并在那里创建一个 基于最旧流的工作空间。
  2. 对于给定的流,由配置文件给出,它读取组件的基线。
  3. 对于此组件的每个基线,将执行比较命令(查看所有差异,遗憾地直接与最新流进行比较会引发异常@RTC版本5.0.1)
  4. 将比较比较的输出以获取必要的信息(作者,评论,日期等)。
  5. 更改将在工作区中被接受,并且在执行相应的git命令后不久将执行相同的操作
  6. 对于每个流,将创建一个分支

    基本上就是这样。如果你愿意,我也可以提供一些示例命令,这些命令帮助我获得必要的信息(关于RTC CLI的特定信息,信息很少见。)

    编辑:我认为该程序的当前版本是稳定的。所以试试吧。 :)我欢迎任何反馈。

答案 1 :(得分:7)

我测试了适配器,我确认它不适用于迁移。它用于链接git提交和RTC更改集。

迁移本身是有限的,只涉及源代码控制部分,而不涉及工作项或构建。

我通常将repo工作区设置为最后几个基线并将它们导入到git工作树中。我不会导入作者姓名。

导入利用了git command--git-dir--work-tree选项。
(如this answerthis 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的大量变通方法,因此您不必为此烦恼。

Link to Bitbucket

它完成了它的工作,也许它可以帮助你。

拉​​尔夫