亀のSVNで2つのブランチをマージしようとしています。分岐したため、両方のブランチが変更されました。それらをマージすると、一方の変更のみが取得され、もう一方の変更のみが上書きされます。しかし、すべてのファイルの最新の変更が必要です(同じファイルで作業していません)。
「2つの異なるツリーをマージする」オプションを試して、「From:」と「To:」に2つのブランチを入力しました。両方でヘッドリビジョンを取得しました。その他はすべてデフォルトのままにしました(マージの深さ:ワーキングコピー、空白の比較、その他はすべてオフ)
From URL
オプションでは、マージするブランチを指定する必要があります。
たとえば、ブランチA
とブランチB
の2つのブランチがあり、ブランチB
をブランチA
にマージするとします。
Merge
オプションをクリックし、次にMerge two different trees
オプションを選択します。From URL
では、ブランチA
のURLを言及し、To URL
では、ブランチB
のURLを言及してください。これにより、ファイルを失うことなくブランチB
をブランチA
にマージします。
参照:このステートメントが見つかりました here
Subversionでのマージは常に行われますローカル。マージするブランチは、クリーンチェックアウトでチェックアウトする必要があります。つまり、ローカルで変更することなく最新の状態にする必要があります。次に、他のブランチをマージして、変更をコミットします。
Mergeは特定のブランチの複製ではありません。マージは通常、3方向の操作です。マージするブランチ(と呼ばれるyours)からマージするブランチ(と呼ばれるtheirs)と最後の共通の祖先(LCA)があります。最後の1つは重要です。
yourブランチで変更が行われた場合、マージプロセス中に変更は行われません。 yoursとLCAには違いがあるため、マージアルゴリズムはこれを認識します。 LCAとtheirsの間に違いがある場合、それは変更と見なされます。
私が理解している場合:
branch1
はトランクから取得されました。branch2
はbranch1
から取得されました。何をマージしようとしていますか? branch1
とbranch2
の両方をトランクにマージしますか? コピーtrunk
をSubversion経由でbranch1
に入れ、コピーbranch1
をSubversion経由でbranch2
に入れれば、これは可能です。 。このように、Subversionは2つのブランチが履歴上で関連していることを認識しています。
ブランチを作成し、Windowsを使用してファイルをコピーし、ファイルを追加した場合、2つのブランチ間の履歴はなく、マージはより困難です。
branch2
の変更をbranch1
にマージしてもよろしいですか?もしそうなら、私はこのようなことをします:
branch2
branch1
をbranch2
にマージし、それらの変更をコミットします。 branch2
には、branch1
のすべての変更が含まれます。trunk
branch2
をtrunk
にマージします。これで、トランクのすべての変更がbranch1
とbranch2
の両方に反映されます。