たぶん世界で一番シンプルなバージョン管理システム -RCS-

No Photo

こんにちは 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 などには遠く及びませんが、サーバ設定ファイルのように『バックアップは別で取ってるからリモートに保存するまでしなくてよくて、ただ単純に変更履歴だけ分かるようにしておきたい!』というようなケースにはバッチリですよ。

参考 URL

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ