2016-04-19 25 views
1

私はTortoiseとのマージを知っています。SNVについては議論されていますが、私の状況は解りません。マージウィザードを使用してdevブランチをトランクにマージすることができますが、マージしたい場合は適切なワークフローは何ですか?がトランクに分岐しますか?Tortoise SVN複数のブランチをトランクにマージ

私の状況では、プロジェクトトランクから3つのdevブランチ(開発者ごとに1つ)を作成しました。最初は、devブランチとトランクは同一でした。開発者もプロジェクトの別の領域で作業しているため、複数の人が同じファイルを使用して作業していません。たとえば、トランク、b1、b2、およびb3は、トランク= b1 = b2 = b3となります。

開発の後、各devブランチからの変更をトランクにマージしたいと思います。これは私が混乱しているところです。私はあなたが単に同じ祖先を共有し、何が変わるべきかを知るのに十分なほど賢いので、各ブランチを一度に1つずつトランクにマージすることができます(次のトランクをマージする前に各ブランチから変更をコミットすること)。だから、私はまた、あなたが(私は亀がないように十分にスマートだと思った)問題が上書きされないようにトランクにマージ、その後、他のdevの枝にdevのブランチの変更をマージする必要があることを読んだことがある

b1 -> merge to trunk -> commit trunk (now trunk has b1 changes) 
b2 -> merge to trunk -> commit trunk (now trunk has b1 and b2 changes) 
b3 -> merge to trunk -> commit trunk (now trunk has b1, b2, and b3 changes) 

。したがって:

b3 -> merge to b2 -> commit b2 (now b2 has b3 changes) 
b2 -> merge to b1 -> commit b1 (now b1 and b2 and b3 changes) 
b1 -> merge to trunk -> commit trunk (now trunk has b1, b2, and b3 changes) 

1つの方法が他の方法よりも優れているか、または欠陥があるかどうかを教えてください。私の関心事は、あるブランチからの変更をマージし、別のブランチからの変更をマージし、最初のマージ操作からの変更を元に戻したり、メタデータの問題を引き起こしたりすることです。

私は25755とのSubversion 1.8.10を構築し、TortoiseSVNのバージョン1.8.8を使用しています。

ありがとうございました!

+0

あなたが従うワークフローに関係なく、変更を取り消す心配はありません。 Subversionはマージの競合にフラグを付け、コミットする前に変更を確認することができます。マージ操作を含め、作業コピー上の操作はいつでも元に戻すことができます。あなたが変更をコミットするときだけ記録されます。つまり、適切なワークフローを使用することで、合併困難から救うことができます。それについての詳細は私の答えを見てください。 – RjOllos

答えて

1

ブランチをブランチにマージしてからトランクに戻す必要があります。 Subversion 1.8より前には、トランクにマージするときに--reintegrateフラグを指定する必要がありましたが、Subversionは新しいautomatic reintegration merge機能でそれを処理します。

  • はB1
  • を削除トランクに変更をコミット
  • トランクにB1に
  • マージB1を変更をコミットB1に

    1. マージトランク:次のワークフローは、SVNの本のbasic merging sectionに記述されています

    b2とb3を繰り返します。

  • +0

    アドバイスをいただきありがとうございます。 devブランチをトランクにマージする前に、トランクをdevブランチにマージする理由を教えてください。私はこれまでにこれを行うことについて読んだことがありますが、トランクが変更されていないことを知っている理由を理解できません。それは単なる良い練習ですか? – radensb

    +0

    トランクが変更されていない場合、トランクをブランチにマージする必要はありません。一般的なケースでは、競合の可能性があり、トランクにマージする前にブランチ上のこれらの競合を解決することがベストプラクティスです。トランクのHEADをブランチに統合し、すべての競合を解決して変更をコミットしたら、ブランチをトランクに再統合するときに競合が発生しません(再統合は1.8でマージを実行すると暗黙的に行われます) )。 b1を再統合した後にトランクが変更されることに注意してください。そのため、一般的なワークフローについて説明しました。 – RjOllos

    +0

    私はもう一度それを読むでしょう。たぶん2回目になるともっと意味をなさないでしょう。また、自分の質問にちょうど答えたと思います。トランクからマージするためのブランチより前のdevブランチへのマージは、現在のdevブランチがマージされているので、以前のマージからの変更が得られます。本質的に私が示した第二のワークフローをやっていますが、トランク自体と矛盾を修正しています。正しい?明確化のためにもう一度おねがいします。 – radensb

    関連する問題