将 SVN 仓库拆分成多个 Git 仓库

4

我有一个SVN仓库,它的文件结构如下:

    |---trunk
    |   |---project1
    |   |---project2
    |   |---project3
    |
    |--branches
    |   |---1.1
    |       |---project1
    |       |---project2
    |       |---project3
    |   |---1.2
    |       |---project1
    |       |---project2
    |       |---project3
    |--tags
    |   |---1.1
    |       |---project1
    |       |---project2
    |       |---project3
    |   |---1.2
    |       |---project1
    |       |---project2
    |       |---project3

我希望将所有东西迁移到Git(保留历史记录),这样之后我就有了3个Git项目:project1,project2和project3。
为了做到这一点,我想创建每个项目的新存储库,然后将每个存储库迁移到Git。
我在网上搜索,但找不到这种文件结构的解决方案。我应该使用SVN过滤器还是其他方法?(我对SVN不太了解)。
1个回答

3

虽然使用SVN分割存储库是可能的,但使用git进行此操作会更容易,因为在重写和重新组织历史方面,git更加灵活。如果您仍然坚持,请参见下文 :-)

因此,我的建议是:

  • 要么:先将存储库转换为git,然后再将其拆分。有关拆分的信息,请参见例如问题Split large Git repository into many smaller ones(顺便提一下,这也描述了从SVN迁移)。
  • 或者:通过逐个转换存储库来同时进行转换和拆分。在转换为git时,可以告诉git只导入/转换一个SVN文件夹(带有历史记录和子文件夹)。这样,您就可以立即为SVN存储库的部分创建一个git存储库。

如果您需要使用Subversion进行拆分,我认为唯一现实的选择是使用svnadmin dumpsvndumpfilter。基本上,您将整个存储库转储到文件中(需要对SVN服务器进行管理员访问),然后修改该转储文件并从中创建新的SVN存储库。有关拆分的说明,请参见书籍“使用Subversion进行版本控制”,第Repository Maintenance章,特别是子部分“过滤存储库历史记录”。有关拆分+迁移的详细说明,请参见CollabNet的Migrating Subversion Repositories to Git – The definitive Guide for TeamForge Users(具有讽刺意味的是,该公司创立了Subversion项目)。

非常感谢您的答复。我已经使用 Git 完成了它,而且运行得非常完美!谢谢! - user4187589

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接