バージョン管理システム( RCS )

バージョン管理システムとは

バージョン管理システムとは、 何度もテキストファイルに修正を繰り返すような現場で、 いつ、誰がどのような修正を行なったのか、という修正履歴を管理するための ツールである。 複数人のプロジェクトでソフトウェア開発やドキュメント開発を 行なうときには必須のツールである。

RCS (Revision Control System)は 基本的なバージョン管理システムのひとつであり、 RCSをベースに開発された超高機能版として CVS (Concurrent Versions System) がある。

RCSやCVSでは、バージョン管理の対象となるファイルを「格納庫」に登録する。 一度に一人だけがそこからファイルを取り出し、変更し、再登録できる。 参照するためだけの取り出しはいつでもできる。 再登録する際には、修正内容の説明も記録するので、 いつ、誰がどのような修正を行なったのか、という修正履歴がわかる。 RCSでは前の状態からの差分が記録されているので、 過去の状態のファイルを取り出すこともできる。

RCSの使い方

準備

ここでは、 test.tex というファイルをバージョン管理の対象としよう。

バージョン管理を行ないたいファイルがあるディレクトリに、 「RCS」という名前のディレクトリを作成する。

% ls -F
RCS/     test.tex

RCSへの登録

ファイルをバージョン管理の対象として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

revision を指定した取り出し

オプションで版番号を指定すると、任意の版を取り出すことができる。
% co -l1.1 test.tex	←編集のための取り出し
% co -r1.1 test.tex	←参照のための取り出し