Feb 23, 2007

Subversion でのロールバック

subversion でのロールバックが、 「Subversion によるバージョン管理 Link 」や、「Subversion - mir the wikiwiki Link 」を見てもわかりにくかったのでメモ。

latex で Makefile を自作していたが、LaTeX-Mk Link というものがあるのを知ったので使ってみた。 Makefile を LaTeX-Mk 用に書き換えて rev 17 でコミット。 あんまりよくなかったので、rev 16 の自作 Makefile に戻したい。 としよう。

svn update -r 16 Makefile

などとしてもだめ。svn (のworking directory)が 「今カレントディレクトリにある Makefile は rev 16 である」 ことを覚えているため、svn update では HEAD を update しなおすだけだし、 HEAD では Makefile は変わっていない。

yasu@cpu Fri 02/23 12:40[~/doctor-thesis/yasu-dthesis](1)> svn update -r 16 Makefile
U    Makefile
リビジョン 16 に更新しました。
yasu@cpu Fri 02/23 12:41[~/doctor-thesis/yasu-dthesis](0)> svn status
yasu@cpu Fri 02/23 12:41[~/doctor-thesis/yasu-dthesis](0)> svn update
U    Makefile
リビジョン 18 に更新しました。
yasu@cpu Fri 02/23 12:41[~/doctor-thesis/yasu-dthesis](0)>

svn diff -r HEAD:16 Makefile

とすると、HEAD(カレントディレクトリの内容)の Makefile を、 rev 16 にするための変更点が(diff -u 形式で)表示される。 このまま diff を merge に変えると、カレントディレクトリ(working directory) の Makefile が rev 16 の内容になる。意味的には、 HEAD から rev 16 への変更点を、カレントディレクトリの Makefile にマージ、 というところか。

svn merge -r HEAD:16 Makefile

その後コミット。

yasu@cpu Fri 02/23 12:43[~/doctor-thesis/yasu-dthesis](0)> svn merge -r HEAD:16 Makefile
U    Makefile
yasu@cpu Fri 02/23 12:43[~/doctor-thesis/yasu-dthesis](0)> svn status
M      Makefile
yasu@cpu Fri 02/23 12:43[~/doctor-thesis/yasu-dthesis](0)> svn commit -m "  Makefile rollback to rev 16"
送信しています              Makefile
ファイルのデータを送信中です.
リビジョン 19 をコミットしました。
yasu@cpu Fri 02/23 12:43[~/doctor-thesis/yasu-dthesis](0)>

Posted at 12:44 in howto | WriteBacks (0) | Edit
WriteBacks
TrackBack ping me at
http://www.sfc.wide.ad.jp/~yasu/nblog/howto/svn-rollback.trackback
Post a comment

writeback message: Ready to post a comment.