優れた無料の Subversionでのバージョン管理 本を使用して、Subversion 1.5での分岐/マージについて読んでいます。 Subversionコマンドラインクライアントを使用して、最も頻繁に必要なアクションを実行する方法を理解していると思います。
トランクからの変更でブランチを更新
ブランチの作業ディレクトリから実行:
svn merge http://svn.myurl.com/proj/trunk
トランクへのブランチのマージ
トランクの作業ディレクトリから次を実行します。
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
ただし、SubversionへのインターフェイスとしてTortoiseSVN 1.5を使用しています。 TortoiseSVNでこれらの操作を実行する最良の方法を知りたいです。新しいダイアログには、メインメニューに3つの異なるオプションがあります。
私が収集できるものから、TortoiseSVNは常に次の構文でsvnを実行します。
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
さらに、ブランチの再統合は、一部のターゲットがマージされていないため続行できないことを示すメッセージで失敗することがよくあります。そのため、オプション#3を使用する必要がありました。
私の質問は:
編集
「ドライラン」テストを通じて、コマンドラインSubversion操作が
svn merge http://svn.myurl.com/proj/trunk
リビジョン範囲を空白にしておく限り、TortoiseSVNのオプション#1(リビジョン範囲をマージ)に似ています。
動作は、リポジトリのバージョンによって異なります。 Subversion 1.5では、4種類のマージが可能です。
Subversion 1.5より前では、最初の2つの形式のみが許可されていました。
技術的には、最初の2つの方法ですべてのマージを実行できますが、最後の2つはSubversion 1.5のマージ追跡を有効にします。
TortoiseSVNのオプションは、リポジトリが1.5以上の場合は範囲3またはリビジョンマップをメソッド3にマージし、リポジトリが古い場合はメソッド1にマージします。
機能をリリース/保守ブランチにマージするときは、「リビジョンの範囲をマージ」コマンドを使用する必要があります。
ブランチのすべての機能を親ブランチ(通常はトランク)にマージする場合にのみ、「ブランチの再統合」の使用を検討する必要があります。
そして、最後のコマンド-2つの異なるツリーをマージする-は、通常の分岐動作の外に出たい場合にのみ役立ちます。 (たとえば、異なるリリースを比較し、その差分をさらに別のブランチにマージします)
私は他の答えを適切にフォローできませんでした、ここにダミーのガイドがあります...
これは、trunk -> branch
またはbranch -> trunk
のいずれかの方法で実行できます。私は常に最初にtrunk -> branch
そこで競合を修正し、次にbranch -> trunk
をマージします。
「リビジョンの範囲をマージ」を使用する必要があります。
トランクからブランチへの変更をマージするには、ブランチ作業コピー内で「リビジョン範囲のマージ」を選択し、マージするトランクURLと開始リビジョンと終了リビジョンを入力します。
トランクのブランチをマージする反対の方法で同じ。
--reintegrateフラグについては、次のマニュアルを確認してください。 http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
svnmerge.py を見てください。コマンドラインで、TortoiseSVNから呼び出すことはできませんが、より強力です。 FAQ から:
従来のSubversionでは変更をマージできますが、すでにマージした内容を「記憶」していません。また、変更セットをマージから除外する便利な方法も提供しません。 svnmerge.pyは作業の一部を自動化し、単純化します。 Svnmergeは、マージしたすべてのログメッセージを含むコミットメッセージも作成します。
Shiftキーを押しながらフォルダーをクリックして、TortoiseSVN->すべてをマージを選択します