【问题标题】:Split SVN repository into several Git repositories将 SVN 存储库拆分为多个 Git 存储库
【发布时间】:2015-12-17 21:21:50
【问题描述】:

我有一个具有这种文件结构的 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了解不多)。

【问题讨论】:

    标签: git svn git-svn


    【解决方案1】:

    虽然使用 SVN 拆分存储库是可能的,但使用 git 会更容易做到这一点,这在重写和重新组织历史记录时更加灵活。如果您仍然坚持,请参见下文:-)。

    所以我的建议是:

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

    如果您必须使用 Subversion 进行拆分,我看到的唯一现实选择是使用 svnadmin dumpsvndumpfilter

    基本上,您会将整个存储库转储到一个文件中(需要管理员访问 SVN 服务器),然后修改该转储文件并从中创建新的 SVN 存储库。拆分在“使用 Subversion 的版本控制”一书中进行了解释(例如),章节 Repository Maintenance - 特别是“过滤存储库历史”小节。

    有关拆分 + 迁移的详细说明,请参阅 CollabNet(具有讽刺意味的是,创建 Subversion 项目的公司)的 Migrating Subversion Repositories to Git – The definitive Guide for TeamForge Users

    【讨论】:

    • 非常感谢您的回答。我已经用 git 完成了它,它工作得很好!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多