将 SVN 存储库拆分为几个 Git 个存储库
Split SVN repository into several Git repositories
我有一个具有以下文件结构的 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了解不多)
虽然可以使用 SVN 拆分存储库,但使用 git 拆分存储库会容易得多,这在重写和重组历史记录时更加灵活。如果你还坚持,请看下面:-).
所以我的建议是:
- 或者:首先将 repo 转换为 git,然后拆分它。对于拆分,请参见例如问题Split large Git repository into many smaller ones(顺便说一下,它也描述了从 SVN 的迁移)。
- 或者:通过逐个转换 repo,一次性转换和拆分。转换为git时,只能告诉git import/convert一个SVN文件夹(有历史和子文件夹)。这样,您就可以立即为 SVN 存储库的各个部分创建一个 git 存储库。
如果您必须使用 Subversion 进行拆分,我看到的唯一现实的选择是使用 svnadmin dump
和 svndumpfilter
。
基本上,您会将整个存储库转储到一个文件(需要管理员访问 SVN 服务器),然后修改该转储文件并从中创建新的 SVN 存储库。拆分在 "Version Control with Subversion" 一章 Repository Maintenance 一章中进行了解释(例如)- 特别是 "Filtering Repository History".
小节
有关拆分 + 迁移的详细说明,请参阅 CollabNet(具有讽刺意味的是,创建 Subversion 项目的公司)的示例 Migrating Subversion Repositories to Git – The definitive Guide for TeamForge Users。
我有一个具有以下文件结构的 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了解不多)
虽然可以使用 SVN 拆分存储库,但使用 git 拆分存储库会容易得多,这在重写和重组历史记录时更加灵活。如果你还坚持,请看下面:-).
所以我的建议是:
- 或者:首先将 repo 转换为 git,然后拆分它。对于拆分,请参见例如问题Split large Git repository into many smaller ones(顺便说一下,它也描述了从 SVN 的迁移)。
- 或者:通过逐个转换 repo,一次性转换和拆分。转换为git时,只能告诉git import/convert一个SVN文件夹(有历史和子文件夹)。这样,您就可以立即为 SVN 存储库的各个部分创建一个 git 存储库。
如果您必须使用 Subversion 进行拆分,我看到的唯一现实的选择是使用 svnadmin dump
和 svndumpfilter
。
基本上,您会将整个存储库转储到一个文件(需要管理员访问 SVN 服务器),然后修改该转储文件并从中创建新的 SVN 存储库。拆分在 "Version Control with Subversion" 一章 Repository Maintenance 一章中进行了解释(例如)- 特别是 "Filtering Repository History".
小节有关拆分 + 迁移的详细说明,请参阅 CollabNet(具有讽刺意味的是,创建 Subversion 项目的公司)的示例 Migrating Subversion Repositories to Git – The definitive Guide for TeamForge Users。