我正计划创建一个开源项目的分支,但我想切换到 GIT。该项目正在使用 SVN,但没有可用的 TRAC,因此我无法在 PC 上没有 SVN 的情况下下载变更集(更不用说 svn diff 不允许二进制补丁)。
有没有办法将我的 GIT 主存储库与 SVN 的 HEAD/主干同步,而不在我的 HDD 上保留另一个项目?
您可以使用以下命令将 SVN 与 Git 同步git-svn(1).
如果您有现有的 Git 存储库,并且想要与另一个 SVN 存储库绑定,您可以尝试某种 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的范围,例如,只有从标签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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)