たぶん世界で一番シンプルなバージョン管理システム -RCS-
こんにちは nakamura です。今年もヒートテックのありがたい季節になってきましたね。サムイサムイ、、、
バージョン管理と言えば Subversion や CVS, 最近でいうと git や mercurial といった分散型のシステムも人気ですが、今回紹介する RCS はそんな高機能なバージョン管理システムとは対照的にとにかくシンプル!機能は限られてるけどその分お手軽なツールなのです。サーバの設定ファイルなんかを管理するのにとても便利ですよ!
インストール
CentOS の場合は以下のコマンドでインストールできます。他のディストリビューションでも、大体パッケージがあるはずなので探してみてください。
yum install rcs
インストールしたら、特に設定もいらずそのまま即使えます。デーモンを常駐させる必要もなければリポジトリもいらないので楽ですね〜。
使ってみよう!
ではさっそく使ってみましょう。今回は /etc/hosts をバージョン管理するとして、コマンド例をご紹介します。
下準備
RCS はリポジトリを必要としませんが、デフォルトの挙動として差分などの情報を記述したファイルを対象となるファイルと同じディレクトリに作成します(/etc/hosts でいうと /etc/hosts,v というファイルが作成されます)。ただこれだと、/etc 以下に ,v なファイルが大量にできてしまって明らかに鬱陶しいですね〜。ということで、/etc 直下のファイルを管理したい場合、/etc/RCS というディレクトリを事前に作成しておきましょう。同階層に RCS ディレクトリがあると、,v ファイルはその中に作成されるのです。
mkdir /etc/RCS
バージョン管理に追加
RCS ディレクトリを作ったらさっそく現状の hosts ファイルをチェックインしてみましょう。以下のコマンドで可能です。
root@example.com ~ # ci -l -wnakamura /etc/hosts
/etc/RCS/hosts,v <-- /etc/hosts
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> .
initial revision: 1.1
done
ci コマンドを使う際は必ず -l オプションを付けるようにしてください。-l オプションを付けないと対象となるファイルが消えてしまいます。-w オプションはログに記録される author を指定する為のものです。ファイルの説明の入力を求められますが、めんどいので . のみを入力して省略しています。
差分を見る
hosts ファイルに変更を加えたら、rcsdiff コマンドで最新のリビジョンとの差分を見てみましょう。
root@example.com ~ # rcsdiff /etc/hosts
===================================================================
RCS file: /etc/RCS/hosts,v
retrieving revision 1.1
diff -r1.1 /etc/hosts
34c34
<
---
> 172.16.0.55 example.com
こんな感じで diff の結果を表示してくれます。-r オプションで特定のリビジョンとの差分を見ることもできます。
ログを見る
rlog コマンドでログを閲覧する事も可能です。
root@example.com ~ # rlog /etc/hosts
RCS file: /etc/RCS/hosts,v
Working file: /etc/hosts
head: 1.2
branch:
locks: strict
root: 1.2
access list:
symbolic names:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1.2 locked by: root;
date: 2010/11/26 14:26:30; author: nakamura; state: Exp; lines: +1 -1
added example.com
----------------------------
revision 1.1
date: 2010/11/26 14:08:55; author: nakamura; state: Exp;
Initial revision
=============================================================================
特定のリビジョンに戻す
めったにないですが、特定のリビジョンに戻したい時は以下のように co コマンドを使います。
root@example.com ~ # co -l -r1.1 /etc/hosts
/etc/RCS/hosts,v --> /etc/hosts
revision 1.1 (locked)
writable /etc/hosts exists; remove it? [ny](n): y
co: /etc/RCS/hosts,v: warning: You now have 2 locks.
done
主な使い方は基本的に以上です。う〜〜〜ん、シンプル!
ちなみに
Windows でも使えるみたいです!
だーにっき WindowsでRCS終わりに
プロジェクトのバージョン管理となるとやはり Subversion や git などには遠く及びませんが、サーバ設定ファイルのように『バックアップは別で取ってるからリモートに保存するまでしなくてよくて、ただ単純に変更履歴だけ分かるようにしておきたい!』というようなケースにはバッチリですよ。