Subversionでbranchからtrunkにマージする方法
ワークスペースの変更を全てcommitしておく
あまり機会がないため忘れがちですが、たまにやったときに困るため、Subversionでのmerge方法をまとめておきます。
今までの作業が水の泡になってしまわないように、一旦現状のワークスペースの変更をcommitしておきます。
branchの内容をtrunkにmerge
作業は以下の手順で行います。
作業リポジトリをbranchに変更
svn switch file:///IPアドレス/branches/ブランチ名
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