[RCS超入門] [RCS初級講座] [RCS中級講座] [RCSエラー対処] [RCS-SCCS対応表] [リンク集]
基本コマンド、ci と co だけでは まだ不便なはずです。 前のバージョンとの diff がとりたい、といった要求のためにも ちゃんと方法が提供されています。 ci/coの他に良く使うコマンドを三つ紹介しましょう。
$Id: rcs2.html,v 2.20 2016-07-02 11:14:26+09 kabe Exp $
% rcsdiff
[diff-options] filenameci
したバージョンと、
現在編集しているfilenameとの間で
diff
(1)をとります。
rcsdiff
自身にもいくつかオプションはあるんですが、
ほとんどのオプションは diff
に渡ります。
ですから、
% rcsdiff -c filename #context diff % rcsdiff -u filename #unified diffといったことができます。
% rcsdiff -r1.2
filenamercsdiff
に対するオプションで、
バージョン番号1.2のものとfilenameとを比較します。
filenameは今そこに転がっているものが使われます。
% rcsdiff -r1.2 -r1.3
filename…は、RCSの構築時に決まっています。PATHは見ません。
ですから、場合によっては/bin/diff
を使うように設定されていて
diff -u
が使えない、といった事態がありえます。
diff -u
はできるのにrcsdiff -u
ができない、
といった場合は 管理者に 「"--with-diffutils"でRCSを作り直してくれ」と
言いましょう。
% rlog
filenameci
の時に入力した注釈を新しい順に表示します。
その他にも最新バージョン番号、ロックがかかってるかどうか、 枝分かれしたバージョンの有無などが表示されます。
% rlog index.html RCS file: RCS/index.html,v Working file: index.html head: 1.25 ←最新版の番号 branch: locks: strict kabe: 1.25 ←ロックがかかっている access list: symbolic names: keyword substitution: kv total revisions: 25; selected revisions: 25 description: Welcome page of my homepage ←初回 ci 時の注釈 ---------------------------- revision 1.25 locked by: kabe; date: 1996/12/05 07:52:09; author: kabe; state: Exp; lines: +2 -2 RCS超入門をvsdに移動。 ←更新 ci 毎の注釈 ---------------------------- revision 1.24 date: 1996/11/28 14:37:16; author: kabe; state: Exp; lines: +4 -7 RCS超入門 ---------------------------- ......
表示の形式は(人にもよるでしょうが)あまり見やすくはないので、 適宜awkなどで加工すると良いでしょう。 (cf.rlog の出力範囲を指定する)
% ident
filename$Keyword: value$
"
となっている部分を捜し出して表示します。
バイナリファイルであっても捜し出してくれるので、
RCSのマニュアルの例にもある
static char *rcsid="$Id: ldd.c,v 4.1 1996-10-15 23:19:39+09 kabe Exp $";
といったものをソースに埋め込んでおけば、コンパイル後でも
バージョンを確認することができます。
% ident /usr/local/gnu/bin/mule /usr/local/gnu/bin/mule: $Id: canna.c,v 1.35 1994/03/15 08:00:03 kon Exp $ %おっと、OSに附属してくるバイナリなどは RCS ではなく SCCS で管理されている ことの方が多いので (除NEWS-OS)、
ident
ではなく what
で調べてみましょう。
履歴管理ツールは、 複数人がいじくるようなファイルで効果を発揮します。 ので、通常は いじらせたい人のグループを /etc/group なりに登録して
% chgrp wwwadmin . RCS % chmod g+ws . RCSカレントディレクトリは当然ですが、 RCSは管理ファイル (*,v) の書き換えを上書きではなく再生成で行うので、
RCS/
にもグループ書き権限が要ります。
カレントディレクトリに転がしておく作業ファイルは、どっちにしても通常は
読取専用 (-r--r--r--) になるので
chmod g+ する必要はありません(ていうかしちゃダメ)。
RedHat系のLinuxはデフォルトが umask 002 なので chgrp だけでいいんですが、普通は umask 022 なので 明示的に書込権を与える必要があります。
これを忘れると、他の人は
システム設定ファイルなど、 rootで編集するものは一般権限は開けられないので、 運用でカバーします。
一般に CGIスクリプトなんかは外部に見られないように 対策を講じるのですが、直接
サーバーが Apacheで、.htaccess が使えるのであれば、 deny してしまうのが一番単純。
% echo "deny from all" > RCS/.htaccess
RedirectMatch が使えるのであれば
% echo "RedirectMatch 404 ." > RCS/.htaccessRCS/ の存在自体を隠せるのでおすすめ。 つまり、http://..../RCS/ を叩いても denied ではなく Not found になる。
もっとも、プロバイダな人で「見せるファイルだけアップロード」 という場合では あまり考える必要はありません。 直接 httpd の動いている機械で作業する人が対象です。
$Id$ は常用するので わりと気をつけられますが、他にも置換される魔法の呪文はあります。 co(1) を参照。 特に変数参照に $ を使う perl や tcl では ci後に はまることがあるので 注意。
... ## output HTTP Header print "$Header: $Content\r\n"; ... |