2009-03-26

Subversion の意外な挙動

Subversion (svn) ではリポジトリ全体に通しリビジョン番号が付いている.ファイルを変更してコミットするとリポジトリ全体のリビジョンがインクリメントされる.しかしそのコミットを実行したワーキングコピーにおいては,リビジョンがインクリメントされるのはコミットしたファイルのみになる.

例えばカレントディレクトリの a.c を変更してコミットしたとしよう.

$ svn ci a.c
$ svn info a.c
Revision: 100
$ svn info
Revision: 99

というようにワーキングコピーにおいてリビジョンの一貫性が失われてしまう.これを解消するには svn update コマンドを用いる.

$ svn update
At revision 100
$ svn info
Revision 100

このことがこれまで何か不思議な挙動をしていると感じた原因に違いない.