在svn中获取合并点以将svn转换为git

时间:2019-06-17 15:03:00

标签: git svn svn2git

我目前正在使用svn2git将SVN存储库转换为git。我遇到的问题之一是,一旦转换,我们在svn中合并的点就不会显示在git中。取而代之的是,除了极少数情况下,我们得到了彼此不连接的独立分支和标签。

要解决此问题,我一直在使用git replace和git filter-branch手动重写历史记录。这是一个非常缓慢的过程,在某些情况下可能需要数小时甚至数天。由于我必须查看git和svn中的历史记录以找到正确的位置。然后对提交运行替换,以添加父级或在合并错误的情况下修复父级。我已经使用简单的脚本自动完成了该过程的某些方面,这些脚本可以解决诸如作者,电子邮件和日期之类的问题。但是,目前合并大多是手动的。

我想做的是找到一种使过程完全自动化的方法。我有一个想法,如何使用git replace使用预期的合并位置列表来管理此问题。然后使用git replace循环遍历它们以重新连接它们,匹配提交消息中存储的修订ID,和/或使用git filter-branch传递历史记录。问题是我对svn的理解不够强,无法弄清楚如何导出合并点列表。

尽管说实话,这不一定是确切的解决方案,因为目标是保留合并历史记录以在git中创建合适的图形。因此,如果有一种方法可以运行svn2git来生成合并本身,那也很好。同样,我尝试了具有相同结果的sub-git和svn-git。 Sub-git在处理标签方面做得更好,但是在保留合并方面都失败了。

0 个答案:

没有答案