読者です 読者をやめる 読者になる 読者になる

Subversionでtrunkの内容をbranchにmergeまたはその逆

備忘録。書きかけ&未確認。

現在の作業リポジトリの変更をすべてコミットしておく

これで失敗しても安心♡

trunkの内容をbranchにmerge

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

svn switch file:///home/sysdev/svn_repos/branches/branched_version

svn infoコマンドで現在の作業リポジトリのURL等を確認しておくこと。

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

svn log --stop-on-copy

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

trunkの内容をbranchにmerge(merge試行)

svn merge --dry-run -r 411:HEAD file:///home/sysdev/svn_repos/trunk

trunkのr411から最新までのコミット内容を現在の作業リポジトリにmergeする。

--dry-runオプションで更新内容だけが表示され実際の変更は行われない。

merge試行の結果を確認

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

C以外は特にやることなし。マージの競合がある場合は適宜対応する。

ファイル修正するなどしたら、必ず--dry-runオプションをつけて実行してmerge試行を実行すること。

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

svn merge -r 411:HEAD file:///home/sysdev/svn_repos/trunk

上記(merge試行)できちんと対応できていれば特に問題なし。

merge内容をcommit

svn commit

branchの内容をtrunkにmerge

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

svn switch file:///home/sysdev/svn_repos/branches/branched_version

svn infoコマンドで現在の作業リポジトリのURL等を確認しておくこと。

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

svn log --stop-on-copy

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

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

svn switch file:///home/sysdev/svn_repos/trunk

branchの内容をtrunkにmerge(merge試行)

svn merge --dry-run -r 411:HEAD file:///home/sysdev/svn_repos/branches/branched_version

trunkのr411から最新までのコミット内容を現在の作業リポジトリにmergeする。

--dry-runオプションで更新内容だけが表示され実際の変更は行われない。

merge試行の結果を確認

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

C以外は特にやることなし。マージの競合がある場合は適宜対応する。

ファイル修正するなどしたら、必ず--dry-runオプションをつけて実行してmerge試行を実行すること。

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

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

上記(merge試行)できちんと対応できていれば特に問題なし。

merge内容をcommit

svn commit