2012-10-03 105 views
15

私はテストのために1つのブランチにマージする必要がある2つのブランチ(トランクの子)を持っていますが、トランクに入ることはできません。どちらのブランチもtrunk @ HEADで最新です。だから私はこのことから行きたい:これまでSVNが2つのブランチ間でマージする - "パスが見つかりません"

__________________trunk 
    \___duck \ 
       \___beaver 

__________________________trunk 
    \ 
    \______________platypus 

私はトランクの最新バージョンから分岐カモノハシを作成し、この新しいコピーにアヒルやビーバーをマージしようとしていますトランク:

svn copy ^/trunk ^/branches/platypus; 
svn switch ^/branches/platypus; 
svn merge --reintegrate ^/branches/duck; 
svn merge --reintegrate ^/branches/beaver; 

が、マージOPSが

svn: '/blah/!svn/bc/12047/repo/branches/duck' path not found 
に失敗

もし私がアヒル(またはビーバー)をトランクに改造しようとすると、それはうまく動作します。私はここで何が欠けていますか?

+0

アヒル、ビーバー、プルチプス - 非常に面白い – Konstantin

答えて

15

私はで手動でを指定して解決することができました。これは、SVNを決定させるのではなく、マージしたいすべてのリビジョン番号を指定しています。これにより、マージが続行され、マージ競合が予想どおりに表示されました。

私は手でリビジョンを選択するのTortoiseSVNを使用していたが、私はSVNのコマンドラインを使用して推測何かのように、それは次のようになります。そして、すべてのリビジョン番号を書き留めし、一度にそれらすべてをマージ

svn log --stop-on-copy https://svn.blah/svn/proj1/branches/xyz 

、例えば:次のように

svn merge -c123,124,156,159 https://svn.blah/svn/proj1/branches/xyz 
-1

マージの際に--ignore-ancestryオプションを使用してみてください。マージ履歴が不完全である可能性があります(おそらく、そのような事実のためにカメやクライアントが原因です)。ブランチ上で行われたことは、通常のマージを行うときに作業コピーに適用しようとしています。

+1

ありがとうございますが動作しません。 --reintegrateと--ignore-ancestryを同時に使用することはできません。また、--reintegrateを使用しないでマージすると、両方のブランチが同じトランクを持つため、わずかな競合が発生します – Mathew

1

私は、別のブランチからマージされたブランチを再統合するのと同じ問題を抱えていました。このように:

-----------------------------r7------------------ 
    \      /   /ERROR !svn/bc/4/repo/branches/duck' path not found 
    r1----dinosaur--r5-------   /
        \---duck------------r9 

パスが見つからないというエラーがR4不満アヒルを再統合することはできていないようだ - しかし、私はトランクに戻ってアヒルから特定のリビジョン(R5-R9)をマージすることができます。

0

私はこれを解決:

  1. はトランク

  2. から作成された新しい "統合" の分岐がその状態にトランクを差し戻しトランクに

  3. を問題のある枝を吸収合併しましたステップ1の前に、復帰をコミットします。

  4. 最終結果はからの変更を含む新しいブランチです

ブランチにのみステップ3から戻ってトランクに新規連結ブランチをマージしてテストさ

  • をレコードをマージされたが、もちろん、それをコミットしませんでした機能ブランチとトランクは変更されていません(ただし、ログに新しいエントリがいくつかあります)。

  • 関連する問題