git - SVN 到 Git 迁移 : Only import certain branches and history

标签 git svn version-control git-rewrite-history

我的团队正准备迁移到 Git,我们希望从一个小型存储库开始。 由于二进制文件和数百个版本分支,由 git-svn 创建的初始 Git 存储库大约有 10GB。

清除大文件很容易,棘手的部分似乎是分支的数量。

对于 git 迁移,我们希望在某个时间点 (X) 只有某些(最新的)分支开始。 我们没有“主干”——而是在较长时间段内维护的不同版本分支:

 ---- Version 1 ------------------------
     \---------- Version 2--------------
                \--------- Version 3----

我很容易发现如何从历史记录中清除大块(BFG、git filter-branch)。

我的问题:

我们如何才能从历史记录中删除除少数特定分支之外的所有分支,以便我们在新存储库中只有分支“版本 3”?理想情况下,我们希望历史从创建此分支的开始提交开始:

 --------- Version 3----

有没有办法用 git filter-branch 或其他方法做到这一点?

最佳答案

我知道这已经晚了几年,但如果有人正在寻找答案以选择不涉及克隆整个事物的几个分支:

使用文件夹 tmp 中的 SVN URL 初始化 git 仓库

git svn init -T <main_branch_name> <repo_url> tmp

更新“.git/config”文件以仅克隆特定分支。 在这种情况下,我们将只克隆与模式 feature*

匹配的分支
[svn-remote "svn"]
   noMetadata = 1
   url = <repo_url>
   fetch = trunk:refs/remotes/origin/trunk
   branches = branches/feature*:refs/remotes/origin/*  ## Added line

现在你可以从SVN仓库中获取文件了

git svn fetch -r $NUMBER:HEAD

更多信息:

关于git - SVN 到 Git 迁移 : Only import certain branches and history,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589394/

相关文章:

git - 多次提交类似 "tag"

git - 无法在Docker快速入门终端中克隆git存储库-无法创建工作树目录 'node-bulletin-board':权限被拒绝

git - 如何使用 git(在 Windows 上)向 svn 贡献代码?

Android Studio 与 GitHub 的集成无法上传除 MainActivity.java 之外的项目文件

version-control - 有人在企业环境中使用分布式 VCS 吗?

git - 设置 Git osxkeychain 错误

git - 为什么 git clone 不将源文件复制到我的本地目录?

c# - 尝试使用 SharpSVN 结账时出现错误

svn - 如何为 Jenkins 授予正确的权限?

svn - Mercurial - 如何管理多个模块