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

Svn 将具有非标准布局的Subversion存储库导入Git,svn,git,git-svn,git-filter-branch,Svn,Git,Git Svn,Git Filter Branch,我试图(永久地)将我的组的Subversion存储库迁移到Git,但在清理其非标准目录结构时遇到了问题 项目的一些内容包含在主干和分支文件夹中,但不是全部。Subversion项目的布局如下: project/trunk/ project/branches/feature_1 project/branches/feature_2 project/libraries project/crontab ... 导入后,我希望Git存储库的布局如下: project/html # the conten

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

项目的一些内容包含在主干和分支文件夹中,但不是全部。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
可能会有所帮助,但我不确定如何使用它。

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


如果您有多个子目录,您可能需要执行
svnadmin转储
,然后
svndumpfilter exclude..
两次,将svn回购拆分为两半,然后使用子树合并方法重新合并它们。这将有一个比许多子树合并更干净的历史。

这个()可能会有所帮助。为什么不做一个“svn移动”来获得适当的结构,然后做一个svn2git呢?您仍然拥有历史记录吗?@版本控制伙伴:在导入之后,Git存储库将考虑旧的<代码>项目/主干文件夹为其根目录。文件夹
svn在导入之前将
d移动到trunk,但它们的原始位置仍将位于存储库的根目录之外,并且它们将被忽略。我觉得它不会被忽略,但我现在没有时间验证我的声明。但是,请检查此项,这似乎与您的要求相似。可能重复的