Subversionを使用して2つのブランチリビジョンをマージする


95

リビジョン10とhttp:// url-of-branch-aのHEAD revの間で行われたすべての変更をマージし、それらをhttp:// url-of-branch-bに適用したいと思います。

何かのようなもの...

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

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

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

編集:はい、私の特定の解決策は...

  1. 変更を受け取りたい作業コピーの場所にディレクトリを変更します(branch-b)
  2. svn merge -r 10:HEAD http:// url-of-branch-a

これは、「branch-a」から「branch-b」への変更をマージします


4
また、分岐がいつ行われたかを知る必要もあります。ブランチでこれ(svn log --stop-on-copy。)を実行して、ブランチ元のリビジョン番号を取得できます。
jmc

@jmc SVN 1.5がリリースされた2008年以降、AFAIR
bahrep

回答:


55

チェックアウトURL A. SVNマージを使用して、URL Bを作業コピーのAにマージします。コミットA.

またはその逆はもちろん:)


127

プロセスは次のとおりです。

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

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

チェックアウトSVNBookをすべての詳細については。


EclipseでSVNプラグインを使用してそれを行う方法についても教えてください。
Snehal Masne 2015年

これは私にとってはうまくいきます:svn merge --force --allow-mixed-revisions -r 10:HEAD branch-a
Minh Nguyen

2
なぜリビジョン10をHEADに指定するのですか?スナップショットとして使用する1つのリビジョンだけでなく、2つのリビジョンエンドポイントを使用するのはなぜですか?「10 to HEAD」はどのブランチを指しますか?
ahnbizcad

2

mergesvn repoでしようとすることで混乱することがほとんどです。svnrepoに直接マージすることはできません。次のようにローカルマシンの作業コピーにマージできます。

  • この作業コピーdestination URLはマージ(つまり、チェックアウト先)のものでなければなりません。

  • マージの作業コピーをsource URLマージします。

  • commit 目的地へ。

ベストプラクティス:マージイン、マージアウト。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.