2010-11-18 19 views
4

GitリポジトリにSVNリポジトリと同期する必要のあるコードがあります。私のレシピは次のようになります:GitからSVNへ:変更をマージできません

  1. SVNリポジトリを作成します(テスト用に、リモートのものになります)。
  2. 最初のコミットに基づいて、新しいリビジョンGitリポジトリ
  3. git svn clone -T '/trunk' <REPO>を初期レイアウトに作成します。
  4. git remote add dev <ORIGINAL>であり、その後にgit pull dev <ORIGINAL_BRANCH>が続く。今私は最初のSVNのコミットに基づいてリポジトリに自分のマスターブランチを持っています。
  5. git svn rebaseに続き、dcommitが続く。でマージに失敗しました「自動マージ」と「CONFLICT(コンテンツ)」のメッセージリベースは最終的に友好的で停止」の夫婦が続く

    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... 
    

ステップ5)しかし、で失敗します変更"。これらの競合を自動的に解決するためにできることはありますか?私はリベース時にどのように矛盾が起こるかを理解していません!

答えて

1

代わりにset-treeをあきらめています。 3つのアプローチを試みたために完全に私の参照のために人工的にgit-svnの初期には、元のGitリポジトリからコミットが続き、ルートにコミット初期...

との歴史の中でgit rebase -p結果:

  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
3

競合は競合しており、gitでは実際にあなたを解決することはできません。相互に排他的な2つの修正のどれが正しいものであるかは、人間だけが言うことができます。

リベース中に競合が発生するのはなぜですか?これは実際にはマージと同じ種類の操作で、異なる歴史をもたらします。何かが中で作られたXをコミットの変更と競合Bをコミットがあります場合は、XにDを合併しているかのよう

- A - B - C - D 
    \ 
    X 

結果のコンテンツは、ある同じであるべきである:あなたがここにDをコミット上にXをコミットリベースと仮定紛争を併合するつもりです。マージしているかリベースしているかは関係ありません。

+0

しかし、私は3つのディレクトリ(SVNの標準レイアウト)を追加するだけのコミットにrebaseするときにどのように競合が発生する可能性がありますか? – yawn

+1

@yawn:まあ、紛争は何ですか?いくつかのコンテンツをリベースしなければなりません。 – Cascabel

+0

私は、以前のマージによる競合が発生したと思います。そのリベースに沿った何かが、コミットで解決されたマージと衝突する可能性がありますか? – yawn

関連する問題