2012-04-23 18 views
2

私はこの問題の適切な解決策を見つけることができませんでした。ここにセットアップがあります:異なるgit repos間で変更をマージ/パッチする最良の方法

  1. 私たちはSVNリポジトリを持っています。そのレポはgit repo git_svn_mirrorにも反映されます。
  2. ブランチsvn_branchがSVNリポジトリで作成されました。
  3. svn_branchで作業が行われました。これには、トランクから数回マージされることも含まれます。
  4. 新しいgit repo git_from_svn_branchsvn_branchから作成されました。
  5. 仕事はgit_from_svn_branchで行われました。
  6. svn_trunkのHEADをgit_from_svn_branchに結合する必要があります。

図:

[git_svn_mirror] [SVN]    [git_from_svn_branch] 
     | <-mirror | 
     | <-mirror | 
     | <-mirror |-\      \ 
     | <-mirror | |      | 
     | <-mirror |-|      | 
     | <-mirror | | --> (move to git) --> | (kept branch history only) 
     | <-mirror |       | 
     | <-mirror |       | 
     | <-mirror |       | 
     | <-mirror |      HEAD <---- 
     | <-mirror |         | 
    HEAD   HEAD         | 
                 | 
    ^  ^         | 
    |____________|__ how do we get one of these, into |__ this (or vice-versa) 

(「なぜ第二のgitリポジトリが作成された」など)は、このような状況の問題に対する最善の解決策は何かに到着し、私たちの原因となった問題を無視しますか?

答えて

1
git remote add git-from-svn-mirror its://repo/url 
git fetch git-from-svn-mirror 

git merge git-from-svn-mirror/master 

とする必要があります。

+0

私は何百もの競合に何百もの問題があります。おそらく私たちはまだSVNにいるときにトランクからマージしたのでしょうか?私はなぜそれほど多くの紛争が起こるのかわからないが、そのレポで変更されたのは数十のファイルしかなかった。 –

+0

実際の違いのみが競合を引き起こす可能性があります.Diffはオンデマンドで作成されます。空白の変更、ラインターミネータの競合、主要なタブはありましたか?うつ病の考えがあります。あなたがどこから来たのかを知り、自分で解決するように見えるように見えます。 – jthill

関連する問題