[解決済み] TortoiseSVN を使って、トランクからブランチに、またはその逆に変更をマージするにはどうすればよいですか?
質問
Subversion 1.5 でのブランチ/マージについて、無料で配布されている優れた Subversion によるバージョン管理 という本を読みました。 私が最も頻繁に必要とするアクションを実行するために Subversion コマンド ライン クライアントを使用する方法を理解しているつもりです。
トランクからの変更でブランチを更新する
ブランチの作業ディレクトリから実行します。
svn マージ http://svn.myurl.com/proj/trunk
ブランチをトランクにマージする
トランクの作業ディレクトリから実行します。
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
しかし、私たちは Subversion へのインターフェースとして TortoiseSVN 1.5 を使用しています。TortoiseSVN でこれらの操作を実行する最善の方法を知りたいのです。 新しいダイアログでは、メインメニューに3つの異なるオプションがあります。
- リビジョンの範囲をマージする
- ブランチを再統合する
- 2 つの異なるツリーをマージ
私が調べたところでは、TortoiseSVNは常に次のような構文でsvnを実行するようです。
svn merge [--dry-run] --force From_URL@revN To_URL@revM PATH
さらに、ブランチの再統合は、「一部のターゲットがマージされていないため続行できません」というメッセージが出て失敗することが多いので、3番のオプションを使う必要がありました。
私の質問は
- TortoiseSVN 1.5 を使って、トランクからブランチに変更をマージするにはどうすればよいのでしょうか?
- TortoiseSVN 1.5 を使って、reintegrate メソッドを使ったり使わなかったりして、ブランチをトランクにマージするにはどうしたらよいでしょうか?
- 上記のオプションのうち、それぞれどれを使うべきでしょうか、またその理由は?
EDIT
ドライランのテストを通して、私はコマンドラインでの Subversion 操作を発見しました。
svn マージ http://svn.myurl.com/proj/trunk
は、リビジョン範囲を空白にする限り、TortoiseSVN のオプション#1(リビジョン範囲をマージする)に類似しています。
どのように解決するのですか?
リポジトリがどのバージョンであるかによって動作が異なります。Subversion 1.5 では、4 種類のマージが可能です。
- マージ sourceURL1[@N] sourceURL2[@M] [WCPATH].
- merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]を指定します。
- merge [-c M[,N...] | -r N:M ...]. source[@rev] [WCPATH] です。
- merge --reintegrate SOURCE[@REV] [WCPATH] を実行します。
1.5以前のSubversionでは、最初の2つのフォーマットしかできませんでした。
技術的には、最初の2つの方法ですべてのマージを実行することができますが、最後の2つは Subversion 1.5 のマージ追跡を有効にするものです。
TortoiseSVN のオプションのマージは、リポジトリが1.5以上の場合は方法3、それ以前の場合は方法1に対応する範囲やリビジョンをマージします。
リリース/メンテナンスブランチに機能をマージする場合、 'リビジョンの範囲をマージする' コマンドを使用する必要があります。
ブランチのすべての機能を親ブランチ(通常はトランク)にマージしたいときだけ、 'Reintegrate a branch' の使用を検討すべきです。
そして最後のコマンド -Merge two different trees- は、通常のブランチ動作から外れる場合にのみ有用です。(例: 異なるリリースを比較し、異なるものをさらに別のブランチにマージする)
関連
-
[解決済み] Subversionでファイルの削除を取り消す簡単な方法は何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] Git を使って前のコミットから分岐させる
-
[解決済み] git merge` で `--no-ff` フラグはどのような効果がありますか?
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み] SVNでディレクトリを無視するには?
-
[解決済み】JavaScriptで2つの配列を結合し、項目の重複を排除する方法
-
[解決済み] 作業コピーのバージョン管理されていないファイルやフォルダーをすべて削除するにはどうすればよいですか?
-
[解決済み] TortoiseSVN を使って、トランクからブランチに、またはその逆に変更をマージするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] mavenのpomにscmの情報を追加する目的は何ですか?
-
[解決済み] SVNから更新する際、ローカルの変更を常に(強制的に)上書きすることは可能でしょうか?コンフリクトを無視しますか?
-
[解決済み] SVNで「containing working copy admin area is missing」を修正する方法は?
-
[解決済み] あるリビジョンにコミットされたファイルを一覧表示する
-
[解決済み] SVNファイルの旧バージョンを表示するには?
-
[解決済み] SubversionのリポジトリをGitのサブモジュールとして持つことは可能ですか?
-
[解決済み] Subversion リポジトリの古いリビジョンを Web ビューで参照するにはどうすればよいですか?
-
[解決済み] 作業コピーのバージョン管理されていないファイルやフォルダーをすべて削除するにはどうすればよいですか?
-
[解決済み] SVNアップグレード作業コピー
-
[解決済み] TortoiseSVN でソース管理からフォルダを削除するにはどうしたらいいですか?