将具有非标准布局的Subversion存储库导入Git

时间:2010-10-11 21:56:51

标签: svn git git-svn git-filter-branch

我正在尝试(永久)将我的组的Subversion存储库迁移到Git,但是我在尝试清理其非标准目录结构时遇到了问题。

项目的一些内容包含在trunk和branches文件夹中,但不是全部。关于Subversion的项目如下:

project/trunk/
project/branches/feature_1
project/branches/feature_2
project/libraries
project/crontab
...

导入后,我希望Git存储库的布局如下:

project/html # the content of the old trunk and branches folders
project/libraries
project/crontab
...

使用适当的选项运行svn2git将正确处理主干和分支目录,但是如何还包含其他文件夹的历史记录?似乎git-filter-branch可以提供帮助,但我不确定如何使用它。

1 个答案:

答案 0 :(得分:0)

将您的仓库的每个主要子文件夹导入单独的git仓库,然后使用subtree merging方法将git仓库合并到一个仓库中。您最终可能会提交一些重复的提交。

如果您有许多子目录,您可能需要执行svnadmin dump,然后svndumpfilter exclude ..两次将svn repo分成两半,然后使用子树合并方法重新加入它们。这将比使用许多子树合并更清晰。