気になるガジェット

気になるガジェットについて簡単にまとめたメモブログです

Subversionでbranchからtrunkにマージする方法

ワークスペースの変更を全てcommitしておく

あまり機会がないため忘れがちですが、たまにやったときに困るため、Subversionでのmerge方法をまとめておきます。

今までの作業が水の泡になってしまわないように、一旦現状のワークスペースの変更をcommitしておきます。

branchの内容をtrunkにmerge

作業は以下の手順で行います。

作業リポジトリをbranchに変更

svn switch file:///IPアドレス/branches/ブランチ名  

svn infoでワークスペースのURLが確認出来ます

branchの開始点のリビジョン番号を確認

svn log --stop-on-copy  

※ 一番最後に出力されるログのリビジョン番号を控えておく(仮にr5454とする)

作業リポジトリをtrunkに変更

svn switch file:///IPアドレス/trunk

branchの内容をtrunkにmerge(テスト実行)

svn merge --dry-run -r 5454:HEAD file:///IPアドレス/branches/ブランチ名

merge試行の結果を確認

フラグ 内容
A 作業用コピーでファイルが追加されました
U 作業用コピーでファイルが更新されました
D 作業用コピーでファイルが削除されました
R 作業用コピーでファイルが置き換えられました
G ファイルのマージに成功しました
C ファイルにマージの競合があるため手作業での解決が必要です

C以外は特にやることなし。マージの競合がある場合は適宜対応する。 ファイル修正するなどしたら、必ず--dry-runオプションをつけて実行してmerge試行を実行すること。

branchの内容をtrunkにmerge(本番実行)

svn merge -r 5454:HEAD file:///home/sysdev/svn_repos/branches/branched_version

merge内容をcommit

svn commit

trunkの内容をbranchにmerge

作業は以下の手順で行います。

作業リポジトリをbranchに変更

svn switch file:///IPアドレス/branches/ブランチ名

branchの開始点のリビジョン番号を確認

svn log --stop-on-copy  

※ 一番最後に出力されるログのリビジョン番号を控えておく(仮にr5454とする)

trunkの内容をbranchにmerge(テスト実行)

svn merge --dry-run -r 5454:HEAD file:///IPアドレス/trunk

merge試行の結果を確認

trunkの内容をbranchにmerge(本番実行)

svn merge -r 5454:HEAD file:///IPアドレス/trunk

merge内容をcommit

svn commit