バージョン管理システム
プログラムやウェブページを書いていると、バージョンの管理をしたくなる場合がある。バージョン管理を行うソフトにはRCS、CVS、subversionなどがあるが、とりあえず一番とっつきやすそうなRCSを試してみた。なお、Mac OS Xにはすでに入っており特にインストールする必要はなかった。
今回はすでに存在するファイルのバージョン管理を行う。まず、RCSディレクトリを作成する。
mkdir RCS
次に、編集前の状態をチェックインする(RCSに登録する)。
ci -l test.html
単にチェックインするとファイルが消去されるが、-l をつけると(co -lでロックしてチェックアウトしたのと同様で)そのまま参照したり編集したりすることができる。
編集が終わったらそれをファイルを残してチェックインする。編集が終わったのでunlockしておく。
ci -u test.html
以降に編集するときは、編集前にlockしてチェックアウトする(RCSから取り出す)。
co -l test.html
RCSを使わずに(co、ciせずに)編集しちゃったあとチェックアウトしようとすると
writable test.html exists; remove it? [ny](n):
と言われてしまう。この場合は今あるファイルが新しいので消すわけにいかない。かと言ってチェックインしようにも"no lock set by username"と言われる。まずはlockするために
rcs -l test.html
を実行し、その後おもむろにチェックインすればよいだろう。
某バイト先でやってたので真似したのだが、もし「使い方間違ってんで」という場合はコメントいただきたく。
あと問題点としてcgiなどのスクリプトは、RCS/hoge.cgi,vでソースが見えてしまう*1。.htaccessなどで回避できるはずだが、ちょっとイヤな感じ。
どこが便利か
簡単バックアップ
mkdir BACKUP cp test.html BACKUP/test.html.20051023
みたいなことを簡単に行える。これを毎回行うのは面倒だが、RCSならco -lしてci -uするだけなので簡単。
特定のリビジョンを表示する
co -p1.1 test.html
ある日付以前の最新のリビジョンを表示する
co -p -d2005/10/23 test.html
diffを表示する
チェックアウト後にどこを編集したか
rcsdiff test.html
あるリビジョンと最新のリビジョンとのdiff
rcsdiff -r1.1 test.html
変更履歴を見る
rlog test.html
どこが不便か
- 覚えることが多い
- 複数人で管理するには向いてない?RCSを使うよう周知徹底が必要。しかし往々にして忘れ去られる(某バイト先)w