バージョン管理システムとは、 何度もテキストファイルに修正を繰り返すような現場で、 いつ、誰がどのような修正を行なったのか、という修正履歴を管理するための ツールである。 複数人のプロジェクトでソフトウェア開発やドキュメント開発を 行なうときには必須のツールである。
RCS (Revision Control System)は 基本的なバージョン管理システムのひとつであり、 RCSをベースに開発された超高機能版として CVS (Concurrent Versions System) がある。
RCSやCVSでは、バージョン管理の対象となるファイルを「格納庫」に登録する。 一度に一人だけがそこからファイルを取り出し、変更し、再登録できる。 参照するためだけの取り出しはいつでもできる。 再登録する際には、修正内容の説明も記録するので、 いつ、誰がどのような修正を行なったのか、という修正履歴がわかる。 RCSでは前の状態からの差分が記録されているので、 過去の状態のファイルを取り出すこともできる。
ここでは、 test.tex というファイルをバージョン管理の対象としよう。
バージョン管理を行ないたいファイルがあるディレクトリに、 「RCS」という名前のディレクトリを作成する。
% ls -F RCS/ test.tex
ファイルをバージョン管理の対象としてRCSに登録するには、
ci
(Check-In) コマンドを使う。
ci
すると、このバージョンの説明の入力待ちになる。
ここでは、最初なので hajimete no RCS. などと入力してみる。
説明の入力を終えるには「.」だけの行を入力する。
説明の入力が終わると、カレントディレクトリにあった test.tex は 初期revision 1.1として RCS/test.tex,v に保管され、 カレントディレクトリからは削除される。
%ci test.tex RCS/test.tex,v <-- test.tex enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! >> hajimete no RCS. >> . initial revision : 1.1 done % ls -F RCS/
編集する目的でRCSからファイルを取り出すには、
co
(Check-Out)コマンドを
格納庫をロックするオプション( -l
)つきで使用する。
ロックして取り出されたファイルは、
取り出した人が ci
して戻すまで、
他の人が編集のために取り出すことができない。
% co -l test.tex RCS/test.tex,v --> test.tex revision 1.1 (locked) done % ls -F RCS/ test.tex再びチェックインすると、取り出した時から変更が加えられているかが調べられる。 もし変更されていれば、変更内容の説明を求められるので入力する。 その結果 revision 1.2 として登録される。
%ci test.tex RCS/test.tex,v <-- test.tex new revision 1.2; previous revision:1.1 enter log message, terminated with single '.' or end of file: >> goji datsuji wo naoshita. >> . done
co
コマンドでファイルを取り出す。
ロックオプションをつけないで co
したファイルには、
誤って編集してしまわないように、書き込みの許可がでていない。
書き込み属性を変更して無理矢理 編集してはいけない。
% co test.tex RCS/test.tex,v --> test.tex revision 1.2 done
% co -l1.1 test.tex ←編集のための取り出し % co -r1.1 test.tex ←参照のための取り出し