共享Git repo同步到svn导致git svn rebase污染repo并记录no-op merge问题

时间:2010-03-16 22:46:43

标签: git git-svn

一开始并没有那么糟糕,但现在我有数百个无操作合并问题(由git rebase --skip解决)。

我为我的小组设置了一个共享git repo,因为它更容易处理。但该公司使用SVN,所以我必须让SVN与GIT保持同步。起初就像一个梦一样,但经过几周的GIT,给了我很多以下的错误。

Applying:  * making all config actions work
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging app/controllers/vulnerabilities_controller.rb
CONFLICT (content): Merge conflict in app/controllers/vulnerabilities_controller.rb
Auto-merging public/javascripts/network_analysis_vulnerability_config.js
CONFLICT (content): Merge conflict in public/javascripts/network_analysis_vulnerability_config.js
Failed to merge in the changes.
Patch failed at 0046  * making all config actions work

我的工作流程:

git co master
git pull origin
git svn rebase
... deal with no-op merge problems ...
git svn dcommit
git pull origin
git push origin

问题在于SVN中的内容是正确的,因此我使用git rebase --skip,但在我能够提交之前,我必须这样做数百次。

如何永久清除这些合并问题?

1 个答案:

答案 0 :(得分:3)

我认为这个工作流程根本不是一个好主意。 Subversion仅支持线性历史记录,因此与SVN同步的分支不应包含任何合并提交。此外,git svn dcommit会重写被推送的提交(即他们的SHA更改),如果已经与另一个repo共享,则可能导致不良事件发生。请参阅git help svn的CAVEATS部分。

也许这种工作流程可以提供帮助:http://unethicalblogger.com/posts/2008/10/git_back_subversion_mostly_automagically_part_33