2009-08-12 14 views
87

rev 10 & HEAD rev http://url-of-branch-aの間で行われたすべての変更をマージし、http://url-of-branch-bに適用したいと思います。SVN - 別のブランチに1つのブランチをマージしますか?

のような何か...

svn merge -r 10:HEAD http://url-of-branch-a 

これは可能ですか?もしそうなら、構文は何ですか?

私は、UNIXコマンドラインからSVNクライアントを実行しています。 SVNクライアントのバージョンは1.4

EDITである:はい、私の具体的な解決策だった...

  1. チェンジディレクトリの変更を受信したい私の作業コピーの場所(ブランチ-B)
  2. へSVN 10 -rをマージ:HEAD http://url-of-branch-a

は、これが 'ブランチ' に 'ブランチ-B'

+4

これは一般的な必要性であると投票され、Billy3からの良い回答があり、Web上の他の場所では文書化されていません。 – fooMonster

+4

また、支店が取られた時期を知る必要があります。ブランチでこれを行うことができます(svn log --stop-on-copy。)。分岐したリビジョン番号を取得します。 – jmc

+0

@jmc SVN 1.5がリリースされた2008年からもうこれは必要ありません。AFAIR – bahrep

答えて

49

チェックアウトのURL A.からの変更をマージ0使用SVNはもちろんのA.

またはその逆をコミットA. の作業コピーにURL Bをマージするマージ:)

+1

ありがとうございます。これは正しい方法で問題を考えさせてくれました。簡単な解決策のために作られました。 – user62732

116

それは(BillyONealが示すように)3段階のプロセスです。

  1. svn merge -r 10:HEAD http://branch-a .)Bの作業コピーに分岐Aから変更をマージ
  2. svn checkout http://branch-b)分岐Bの作業コピーを確立ブランチB(svn commit)にコピーBの作業(競合を解決した後)コミット

svn mergeセマンティクスのマニュアルページ(ヘルプファイル)を確認してください。これは、svn mergeが常に結果を作業コピーにダンプすることを示しています。

すべての詳細についてはthe SVNBookをご覧ください。

+0

は今や完全に意味をなさないものです。ありがとう! – user62732

+35

+1 - この回答は私より優れています。 –

+0

eclipseでSVNプラグインを使用してそれを行う方法も考えてください。 –

0

ほとんどのsvnレポでやろうとすることによってmergeを混同し、私たちが直接レポをsvnをするためにマージすることはできません、次のように、我々はローカルマシンの作業コピーにマージすることができます:

  • この作業コピーがのdestination URLする必要がありますマージ(つまり、チェックアウト先)。

  • マージ作業コピーsource URLのマージで。

  • commit宛先。

ベストプラクティス:アウトマージでは、マージします。

関連する問題