git-svn如何处理已更改布局的svn存储库?

时间:2009-07-20 13:35:10

标签: svn git repository git-svn

此问题类似于this onethis one,但情况稍微复杂一些。

几年前我开始使用私有svn存储库(我主要用于各种机器之间的共享配置文件等)。我对存储库的布局(分支,去等等)都不太谨慎,所以随着时间的推移,它发生了很大的变化。这当然是一个错误,但现在已经太晚了。最近,我将它迁移到更标准的svn trunk / branches / tags布局,主要是使用svn move命令,但当然旧的历史记录仍然存在于存储库中(坦率地说,有点乱)

我现在想将此永久转换为git存储库。我已经尝试过使用git-svn,但它似乎只处理了一直遵循一致的trunk / branch / tag约定的情况(是的,你可以提供替代名称,但每个只有一个,它出现)。我的存储库的很多历史记录都有效地存储在存储库的根目录中,例如,标记/和分支/作为子目录。

处理所有这些问题的最佳方法是什么?理想情况下,我最喜欢的git存储库至少可以以某种方式访问​​所有历史记录,即使分支和标记没有在git中正确表示为一等概念。

更具体地说,svn-git如何处理它提供的trunk / branches / tags子目录之外的文件?到目前为止,我的观察结果是它有时会错过它们(绝对不行),有时则会将它们添加到新的存储库中。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

根据我的经验,处理此问题的唯一方法是随时跟踪存储库的位置,并为项目保留在一个位置的每个时段单独创建一个git-svn-clone。

在您为不同阶段及时创建存储库之后(或者至少在您可以打扰的时候),您可以将存储库移植到一起。

我在这里创建了一个演示此技术的截屏视频:

http://blog.tfnico.com/2010/10/gitsvn-6-grafting-together-svn-history.html