1

次の手順に従って、ブランチをトランクにマージしました。

トランクのコピーをチェックアウトします。

svn co svn+ssh://server/path/to/trunk

マージしようとしているブランチのコピーをチェックアウトします。

svn co svn+ssh://server/path/to/branch/myBranch

現在の作業ディレクトリを「myBranch」に変更し、リビジョン「myBranch」が次の場所で始まることを確認します。

svn log --stop-on-copy

これにより、ブランチが切断された時点までの変更が表示されます。その番号を覚えておいてください (XXXX はリビジョン番号である rXXXX である必要があります)。現在の作業ディレクトリをトランクに変更します # SVN 更新を実行します。

svnアップ

これにより、トランクのコピーが最新バージョンに更新され、現在のリビジョンが通知されます。その番号も書き留めます (「At Revision YYYY」と言う必要があります。ここで、YYYY は覚えておく必要がある 2 番目の番号です)。これで、SVN マージを実行できます。

svn マージ -rXXXX:YYYY svn+ssh://server/path/to/branch/myBranch

マージ後、結果をチェックインした場合、ブランチは削除されますか? ブランチを保持する必要があります (この古いブランチで開発を続ける必要があります)。

4

3 に答える 3

3

あなたが何をしているのかわかりません。マージ先のブランチをチェックアウトするだけで済みます。両方のブランチをチェックアウトしたり、切り替えを行ったり、作業コピーを変更したり、ログを記録したりする必要はありません。これは非常に簡単な手順です。

  • 元のブランチからブランチ(コピーブランチと呼びます)を作成します(通常はそうですが、必ずしもそうとは限りません)。trunk
  • 開発手法に応じて、オリジナルブランチとコピーブランチの両方で作業を行うことができます。
  • マージを実行する場合は、マージ先のブランチのコピーをチェックアウトします。結局のところ、これは変更を取得するブランチです。これらのマージされた変更をリポジトリにコミットする前にテストする必要があります。
  • マージを行うにはsvn merge、作業コピーでコマンドを使用するだけです。元のブランチからコピーブランチにマージする場合は、--reintegrateスイッチを使用しません。コピーブランチからオリジナルにマージする場合は、--reintegrateスイッチを使用します。

これですべてです。マージするリビジョンを選択して選択することも、単にすべての変更をマージできるようにすることもできます。Subversionのマージは非常に優れており、Subversionはマージの追跡に非常に優れています。

分岐とマージに関するSubversionマニュアルの章を読むことをお勧めします。

マージしたブランチを削除する必要がありますか?いいえ。バージョン1.5以降のSubversionは、すでに行われているマージを複製しません。

ブランチが不要になった場合は、ブランチ削除できます。たとえば、リリース1.2ブランチを作成します。リリース1.2.1とリリース1.2.2を実行します。ただし、リリース1.2.xを使用しているユーザーはおらず、作業を行っていません。削除しても見えないから削除するかもしれませんsvn ls http://server/svn/branches。Subversionなので、削除すると緊張する場合は、邪魔にならないように移動できます。に移動できhttp://server/svn/branches/OBSOLETE/1.2ます。そうすれば、ブランチをリストしたときに表示されませんが、本当に必要だと判断した場合でも、表示されたままになります。

ちなみに、Subversionが実際に何かを完全に削除することは決してありません。ブランチを削除しても、いつでも元に戻すことができます。

于 2012-11-11T05:29:17.533 に答える
1

あなたがしたいことは、SVN 1.8 ではかなり単純であり、同期マージと自動再統合で明示的にサポートされています。コマンドは次のとおりです(以下のドキュメントとリンクで確認できます)。

cd path/to/branch/myBranch
svn up
svn merge ^/path/to/trunk  # usually just: svn merge ^/trunk
svn ci -m "Merged changes from trunk."

cd path/to/trunk
svn up
svn merge ^/path/to/branch/myBranch
svn ci -m "Reintegrated branch."

「ブランチの再統合」に関するhttp://svnbook.red-bean.com/en/1.8/svn.branchmerge.basicmerging.htmlから、次のように述べています。

ブランチをトランクに再統合した後にブランチを削除しないことを選択した場合は、引き続きトランクから同期マージを実行してからブランチを再統合することができます[37]。これを行うと、最初の再統合後にブランチに加えられた変更のみがトランクにマージされます。

于 2014-04-07T18:31:00.470 に答える