home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2009/09/13/Subversionでのマージ・ロールバックのメモ

日記/2009/09/13/Subversionでのマージ・ロールバックのメモ

日記 / 2009 / 09 / 13 / Subversionでのマージ・ロールバックのメモ
id: 435 所有者: msakamoto-sf    作成日: 2009-09-13 18:05:48
カテゴリ: Subversion 

今度の現場はSubversionをバリバリに使っている。自分もSVNは使っていたとはいえ、ぶっちゃけYakiBikiなど個人レベルでしか使っていないため、担当者毎のbranchをtrunkに統合したり、間違ってcommitしたのをrollbackしたりなどは行っていない。(rollbackだって、-r付でco下のをバックアップした後、最新版に上書きしてcommitするで済ませてた(;´Д`))

以下のまとめは、次のURLから当座必要な「trunkの変更をbranchにマージ(or その逆)」「commitしたファイルをロールバック」のやり方を抜き書きしたもの。

trunkの変更をbranchにマージ

マージの基本:

svn merge -r <From>:<To> <マージ元> <作業コピーパス>

"<From>", "<To>"はリビジョン番号で、"<From>"から"<To>"の間に行われた "<マージ元>" に対する変更を "<作業コピーパス>" に対して適用する。<作業コピーパス>省略時は、カレントディレクトリに適用される。

例えば "file:///opt/SVNREPOS/repo1/trunk" 以下に行われた r100から最新版(HEAD)までの変更を、"repo1/branch/abc" をcheckoutして作業中のカレントディレクトリに対して適用するのであれば、

svn merge -r 100:HEAD file:///opt/SVNREPOS/repo1/trunk

となる。作業コピーパスはカレントディレクトリなので、省略している。

逆に、カレントの作業コピーがtrunkで、 repo1/branch/abc をマージしたい場合は

svn merge -r 100:HEAD file:///opt/SVNREPOS/repo1/branch/abc

となる。

commitしたファイルをロールバック

「未来から過去に向かっての変更点」をマージすると考える。
すると、例えば作業コピー中の foo.txt というファイルを間違ってcommitして、commitする前のバージョンに巻き戻したい場合は、以下のようにmergeコマンドを実行する。

svn merge -r COMMITTED:PREV foo.txt

「直前」などではなく、明確に「リビジョンXXX」に戻したいという場合は

svn merge -r HEAD:XXX foo.txt
or 
svn merge -r COMMITTED:XXX foo.txt

というようになる。

単純に以前のバージョンを見たいだけの場合(svn cat)

svn cat <対象>@<REV>

例:commitする前のバージョンを見たい

svn cat foo.txt@PREV
or
svn cat -r PREV foo.txt

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-09-13 18:42:18
md5:841d694b43368b38f31d2628691f9ad2
sha1:166b2ba254402de2bd77dcf18dbb4ccef1d9b47d
コメント
コメントを投稿するにはログインして下さい。