我计划创建一个开源项目的分支,但我想切换到 GIT。该项目正在使用 SVN,但没有可用的 TRAC,因此我无法在 PC 上没有 SVN 的情况下下载变更集(更不用说 svn diff 不允许二进制补丁)。
有没有办法将我的 GIT 主存储库与 SVN 的 HEAD/trunk 同步,而不在我的 HDD 上保留另一个项目?
最佳答案
您可以使用 git-svn(1) 将 SVN 与 Git 同步.
如果您已有 Git 存储库,并且想要与另一个 SVN 存储库绑定(bind),您可以尝试某种 voodoo,请参阅 http://blog.experimentalworks.net/2009/07/git-voodoo/ 。
该博客展示了如何使用新创建的远程 SVN 存储库将现有的非 git-svn Git 存储库转换为启用 git-svn 的 Git 存储库。您可以稍微修改 voodoo 工作流程,将现有的 SVN 存储库导入到您的 Git 存储库:
将主干作为并行分支导入到现有的 Git 存储库
cd GIT-REPO git svn clone --stdlayout SVN-URL .
设置移植物:
TRUNK_HEAD=`git rev-parse trunk` MASTER_INIT=`git rev-list --reverse master | head -1` echo $MASTER_INIT $TRUNK_HEAD >.git/info/grafts
找出 master 分支中要追加到 trunk 的范围,例如只有从 tag v2.0 开始的更改才会追加到 trunk。
重新设置主干基数
git checkout master git rebase --onto trunk v2.0 master
提交到主干
git svn dcommit
使用提示:通过将移植与 git-svn 结合使用,您应该确保不会 dcommit
空提交。否则,dcommit
将失败。要过滤掉空提交,请尝试
git filter-branch --prune-empty
第一次dcommit
之前。
关于svn - 如何将GIT存储库与SVN同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368643/