我刚刚创建了一个 git-to-svn 设置,我对此束手无策。我已经设置了一个包含两个远程存储库的存储库,一个基于 svn,另一个基于远程 git:
svn-remote.svn.url=https://subversion.acme.com/svn/sales/portal/trunk
svn-remote.svn.fetch=:refs/remotes/git-svn
remote.origin.url=mottinger@git.tkknow.com:/gitroot/acme-gtm-2-0.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
一旦我设置了这个,我就可以将提交从 git repo 移动到 svn repo,如下所示:
git fetch origin
git rebase origin/master (linearizes commits to svn)
git svn rebase
git svn dcommit
一切都很好,直到我决定测试我将如何处理冲突。我创建了一个 foo.dat 文件,并从 svn 端在其中添加了一行,并在 git 端创建了一个相应的文件,其中一行表明它来自 git。我跑过去git fetch origin
把git rebase origin/master
foo.dat 文件放下。这很好,但是尝试运行git svn rebase
导致了冲突。完全符合预期,所以我完成了编辑冲突和使用 svn rebase --continue 的步骤。但随后混乱开始了。尝试运行后git rebase origin/master
为了从 repo 中删除其他更改,我在同一个 foo.dat 文件上发生冲突。我已经把它变成了一个状态,如果我解决了 svn 的冲突,git 就会失败,反之亦然。最令人沮丧的是,我似乎无法找到一种方法让存储库恢复到恢复这种混乱状态的状态。目前,我有幸完全吹走 repos 并重试,但将来当开发人员使用它时,如果我让自己进入这样的状态,我真的很想知道如何摆脱。任何关于正在发生的事情以及如何结束不断合并的提示将不胜感激。
谢谢!