关于svn:将带有非标准布局的Subversion存储库导入Git

Importing a Subversion repository with a non-standard layout into Git

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

项目的一些内容包含在主干和分支文件夹中,但不是全部。关于颠覆的项目如下:

1
2
3
4
5
6
project/trunk/
project/branches/feature_1
project/branches/feature_2
project/libraries
project/crontab
...

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

1
2
3
4
project/html # the content of the old trunk and branches folders
project/libraries
project/crontab
...

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


将回购的每个主要子文件夹导入到单独的git repo中,然后使用子树合并方法将git repo合并到一个回购中。不过,您最终可能会得到一些重复的提交。

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