从Git到SVN:无法合并更改

时间:2010-11-18 14:21:41

标签: svn git

我在Git存储库中有一些代码需要与SVN存储库同步。我的食谱看起来像这样:

  1. 创建一个SVN存储库(本地,用于测试,将是一个远程存储库)。
  2. 创建初始布局,提交1个修订
  3. git svn clone -T '/trunk' <REPO>基于初始提交的新Git存储库。
  4. git remote add dev <ORIGINAL>后跟git pull dev <ORIGINAL_BRANCH>。现在我基于最初的SVN提交在存储库中拥有我的主分支。
  5. git svn rebase后面会跟dcommit
  6. 然而,

    步骤5)失败了:

    Using index info to reconstruct a base tree...
    Falling back to patching base and 3-way merge...
    Auto-merging X
    Applying: Y
    Applying: Z
    Using index info to reconstruct a base tree...
    <stdin>:269: trailing whitespace.
    
    <stdin>:315: trailing whitespace.
    
    <stdin>:400: trailing whitespace.
         * Method 2.6. Returns zero or two elements 
    <stdin>:3762: trailing whitespace.
    
    warning: 4 lines add whitespace errors.
    Falling back to patching base and 3-way merge...
    

    随后出现了一些“自动合并”和“CONFLICT(内容)”消息,rebase最终停止了友好的“无法合并更改”。我可以做些什么来自动解决这些冲突?我甚至不理解在重新定位时如何发生冲突!

2 个答案:

答案 0 :(得分:3)

冲突是冲突,git无法真正解决它们。只有一个人可以肯定地说两个相互排斥的修改中哪一个是正确的。

至于为何你可以在rebase期间遇到冲突?它与合并实际上是一种操作,只会导致不同的历史记录。假设你将X提交到提交D:

- A - B - C - D
   \
    X

结果内容应该与将D合并到X中的内容相同。如果提交B中的某些内容与提交X中的更改冲突,则会发生合并冲突。无论您是合并还是重新定位都无关紧要。

答案 1 :(得分:1)

我放弃并使用set-tree代替。 git rebase -p导致在root上使用人工git-svn初始提交的历史记录,然后是原始Git存储库的初始提交...

为了完整起见,我尝试了三种方法:

  1. http://code.google.com/p/support/wiki/ImportingFromGit - git rebase
  2. http://markpasc.livejournal.com/186297.html - git svn rebase
  3. http://repo.or.cz/w/nagiosplugins.git?a=blob;f=tools/git2svn.pl - set-tree