RCSは結構便利っぽい?

バージョン管理ソフト、使ってますか? 私は使ってません。どうせファイル1つだし。めんどいし。

いつまでもそれはマズイな、ということでとりあえずRCSを使ってみる。 サーバーの設定ファイルとかでは使っているのだけれど、ちゃんと調べたことなかったので、改めて。

インストール(windows)

とりあえずインストール。 linuxの場合はお使いのディストリビューションのパッケージ管理システムでどうぞ。

Official RCS Homepageからrcs57pc1.zipってやつをダウンロード。 展開したらwin32ってディレクトリが出てくるので、その中のbinディレクトリの中身をパスが通った場所に置きます。

環境変数をセット。 batファイルに書く用なのでbat形式だけれど、普通に環境変数に入れておっけーです。

rem チェックアウト/チェックインするときに使うユーザー名。セットしなくてもいい。
set USER=MacRat

rem タイムゾーンの設定。
set TZ=JST-9

rem RCS関係のコマンドに読み込ませるオプション。
set RCSINIT=-x,v -zLT

以上。これで動くはず。

RCSファイルを作る

適当なエディタでテキストファイルを作ります。ここではtest.txtを作ったことにして話を進めます。 空でも作れるらしいけれど、必要ないでしょ、きっと。

んで、チェックイン。

ci test.txt

ファイルについての説明を求められるので、適当に書く。 書き終わったら.(ドット)だけ書いて改行。

チェックインするとtest.txtが消えて、test.txt,vというファイルが作られます。 これがRCSファイルってやつね。リポジトリ的な。

カレントディレクトリに作られるのが嫌な場合は、RCSって名前のディレクトリを作るとそこに置かれます。

チェックアウト

co -l test.txt

とするとチェックアウトしてロック出来ます。 編集する気がない場合はロックする必要がないので、-lオプション要りません。

ロックしちゃったけどやっぱやめたってときは

rcs -u test.txt

こんな感じでアンロック。

逆に、ロックせずにチェックアウトしちゃったけど編集したいってときは

rcs -l test.txt

みたいな感じ。

チェックイン

ci test.txt

でチェックイン。 コミットログを求められるので、編集した内容の説明とかを書いて、.(ドット)だけの行で終了。

そのままだとチェックインした後test.txtが消えちゃうけれど、

ci -u test.txt

とするとチェックインしたあともファイルが残ります。

ci -l test.txt

なら残すついでにロックもしてくれます。 続けて編集するなら便利。

リビジョンの一覧を見てみる

rlog test.txt

以上。特に説明することもない感じ。

差分をとってみたりする

rcsdiff test.txt

こうやると最新のリビジョンと、今あるファイルとの比較を行います。 出力は普通のdiff。・・・にしては情報量が少ない気もする?

rcsdiff -r1.1 test.txt

とするとリビジョン1.1と現物の比較ができたり、

rcsdiff -r1.1 -r 1.2 test.txt

とすればリビジョン1.1と1.2の比較ができたり。

ロールバック

ロールバック用のコマンドがあるわけではないっぽい。 ので、チェックアウトとチェックインを組み合わせて使います。

以下の例では最新版が1.5、ロールバックしたいバージョンが1.3、って感じで。

co -r1.3 test.txt

みたいな感じでリビジョン1.3をチェックアウト。

ci -f1.6 test.txt

こうやって最新のリビジョンとして登録し直します。

以上。シンプル。

キーワード置換

で、本題的なもの。なんて長い前置き。

ファイル内に特殊な文字列を埋め込むと勝手に色々置換してくれるらしい。

例えば、

$Author$
$Date$
$Id$
$Log$
$Revision$
とか書いておくと、
$Author: MacRat $
$Date: 2013-11-26 02:49:36+09 $
$Id: test.txt,v 1.3 2013-11-26 02:49:36+09 MacRat Exp $
$Log: test.txt,v $
Revision 1.3  2013-11-26 02:49:36+09  MacRat
append keywords

$Revision: 1.3 $

みたいになる。べんりー。

Logなんかは

/*
 * $Log$
 */

# $Log$
とすると
/*
 * $Log: test.txt,v $
 * Revision 1.3  2013-11-26 02:53:38+09  MacRat
 * test
 *
 */

# $Log: test.txt,v $
# Revision 1.3  2013-11-26 02:53:38+09  MacRat
# test
#

とかなる。 なにこれ素敵。

キーワードの一覧はMan page of COにあります。


参考: