26

私の既存の (Pre-SVN 1.5) マージ戦略では、後でマージ中に参照するために、ブランチ作成の時点でトランク (BasePoint と呼ばれる) のコピーを作成します。

ブランチをトランクにマージする必要がある場合、2 つの操作を実行します。

  1. BasePoint から LatestTrunk (Trunk は元のブランチから移動した可能性があります) を Branch の作業コピーにマージし、コミットします。

    この時点で、通常、ブランチへのマージによって何も損傷を受けていないことを確認します

  2. LatestTrunk から LatestBranch にマージしてトランクの作業コピーに戻し、コミットします。

ドキュメントによると、トランクで新しい再統合マージを使用し、ブランチからマージすることをお勧めします。

最初にトランクから開発ブランチにマージする必要がありますか?それとも、これは新しい再統合オプションに含まれていますか?

別の言い方をすれば、新しいmerge --reintegrate機能は「以前のマージのそれぞれ」または「操作全体」を表していますか?

(FWIW私はTortoiseSVN 1.5.1を使用しています)

4

3 に答える 3

28

簡単に言えば、まだ両方の手順を実行する必要があります。

SVN bookは、マージのプロセスを次のように説明しています。

  1. ブランチの作業コピーでsvn merge http://trunk/path
  2. svn merge --reintegrate http://branch/pathがトランクの作業コピーにある場合

リビジョン番号がないことに注意してください。これはおそらく大きな勝利のようには感じられません。新しいクールな点は、ブランチでコーディングしているときにマージを再実行できることです。これにより、トランクの変更に合わせてブランチを最新の状態に保つことができます (手動でリビジョン番号を記録する必要はありません!)。SVN は、トランクからマージする必要があるものと、ブランチに固有の変更を追跡します。ブランチの処理が完了すると、 --reintegrate はそのデータを使用して、ブランチの変更のみをトランクに自動的にマージします。

于 2008-10-06T14:11:53.427 に答える
2

reintegrateは実際には2つの操作を実行しないと思いますが、代わりに、更新されたブランチからトランクにマージするために使用されます。ブランチを最初に更新するには、マージ/コミット操作の最初のセットを実行する必要があります。

これがSubversionBookへのリンクです。この本は枯れ木形式で入手することができます。

リンクからは、-reintegrateを使用すると、いくつかの奇妙なケースが処理されるように聞こえます。おそらく、ストレートパッチを使用する場合と比較して、マージが通常行うようです(「代わりにパッチを使用しない理由」のセクションを参照してください)。

于 2008-10-06T13:10:06.907 に答える
2

svnの問題のマージ(およびreintegrateの機能)に関する優れたブログ投稿はここにあります。

于 2008-11-17T03:21:07.840 に答える