ソースコードのバージョン管理

2000.3.3. Fri.
VC (Version Control) と RCS
 ふと,バージョン管理をしようと思い立つ。

 バージョン管理と言えば CVS じゃろ…,と調べ始めるが,CVS は *新たに* インストールしなければならない事が判明。
 で,Emacs では? と Emacs の info を徘徊していると,VC という機能があって,そいつは default では RCS を使うようになっていた。
 で,その RCS は既にインストールされていた。
 CVS と RCS の違いを調べてみると,個人利用レベルでは RCS で充分な感じ。
 最近,チャンドラを *止める* ワケにはいかない事情があるので,deb パッケージ追いかけは控えている。そんでもって新たにインストールする気持ちにもなれなかったので RCS で行く事にする。

ディレクトリの作成
 バージョン管理をするファイルが HelloWorld.java とすると,管理するマスターファイルは HelloWorld.java,v となる,これはソースファイルと同じディレクトリに作成されるが,そのディレクトリに RCS というディレクトリがあると自動的にそこで管理するので,mkdir RCS しておく。
ファイルを VC 管理下に登録 (C-x v i)
 普通にファイルを開いてる状態で C-x v i を実行。
 この瞬間,そのファイルの write 権が無くなる (これをチェックインした状態と言うらしい)。
チェックアウト (C-x C-q)
 write 権の無いファイルを編集する時と同じキーバインドになっているのが Emacs の素晴しいところ。
 RCS 管理下にあるファイルを開いて C-x C-q すると自動的にチェックアウトする。
 ここでマスターファイルがロックされて,他からの編集はできないようになっているらしい (CVS はそれも可能らしい) が,一人で開発,管理してるので,既にチェックアウトしてるファイルを編集しようとした場合,どんな具合になるのかは知らない。
チェックイン (C-x C-q)
 チェックアウトと同じキーバインド (簡単でよろしい)。
 変更履歴を入力を促すバッファが開いて,コメントを書いて C-c C-c でセーブ。
 このコメント…,日本語が使えない…。C-c C-c したら RCS のエラーが出てチェックインできない。と思ったら使える。どうやら一番最初のチェックイン時のみ日本語がダメみたい。 その後判明した設定
ファイルの比較 (C-x v =)
 カレントバッファとチェックインした最新バージョンとの比較。
変更履歴 (C-x v l)
 バージョン管理の状態と変更履歴を表示。
ChangeLog の作成 (C-x v a)
 自動で ChangeLog を作成してくれる。何だか嬉しい。
修正のやんぴ (C-x v u)
 バッファとファイルを最新のチェックインしてあるバージョンに復元する。
VC の Dired (C-x v d)
 チェックアウトしたまま…,ってのは悲しいので,チェックインしたかどうかの確認に使う (のかな?)。
 dafault ではチェックアウトしているファイルだけの表示だが,v t で管理下にあるファイルを全部表示するように切り替えられる。v t はトグルになっている。
マクロ
 $Id: 20000303_VC.html,v 1.1.1.1 2003/01/17 06:12:27 take Exp $ という文字列を入れておくと,自動で,$Id: 20000303_VC.html,v 1.1.1.1 2003/01/17 06:12:27 take Exp $ というような文字列に展開してくれる。
 時刻はグリニッジ時間みたい。
 無理矢理バージョン表示をしたくなる :)

 あとは,バージョン間の比較だとか,スナップショット,枝分れバージョンの管理…と,いろいろと細い事が出来るみたいだが,まだそこまで管理するような大規模なプログラムを書いていない。
 『できる』という事のみ頭の片隅に置いておいて,『その時』が来たら試す事にする。
戻る