ノード:CVS keeps changing file permissions; why does it do that?, 次:CVS on Windows complains it cannot find my .cvspass file; why?, 前:My commits seem to happen in pieces instead of atomically, 上:Some Real Life Problems (With Solutions)
CVS がファイルのパーミッションを変更しつづけるんです; なんでそんなこ とをするんでしょうか?
一般に、 CVS はファイルのパーミッションを保存するについてはあまり良 い仕事をしません。プロジェクトをインポートしたあと、それをチェックア ウトする場合、新しい作業コピーのファイルのパーミッションが、インポー トされたときと同じである保証はありません。作業コピー中のファイルが、 普通にファイルを新しく作ったときの標準パーミッションと同じ、というこ とのほうがありそうです。
しかし、例外が少なくともひとつあります。プロジェクト内に実行可能なシェ
ルスクリプトを保存したい場合には、対応するリポジトリのファイルを実行
可能にしておけば、全ての作業コピーでそのファイルを実行可能に保つこと
ができます:
floss$ ls -l /usr/local/newrepos/someproj total 6 -r--r--r-- 1 jrandom users 630 Aug 17 01:10 README.txt,v -r-xr-xr-x 1 jrandom users 1041 Aug 17 01:10 scrub.pl,v* -r--r--r-- 1 jrandom users 750 Aug 17 01:10 hello.c,v
そのファイルは実行可能ですが、リポジトリ中のファイルがすべてそうであ るように、読み出し専用になっているままです(CVS は RCS ファイルの一時 的なコピーを作って作業し、そのコピーの中ですべてをおこなってから、準 備ができたらそのコピーをオリジナルと置き換える、ということを思い出し てください)。
実行可能ファイルをインポートまたは追加した場合には、CVS は実行可能ビッ トを保存しますので、ファイルが最初から正しいパーミッションならばなに も心配することはありません。ですがたまたま、実行可能にする前にファイ ルを追加してしまったら、リポジトリ内に移って、RCS ファイルのパーミッ ションを手で実行可能にしてください。
リポジトリのパーミッションのほうがつねに優先されます。リポジトリ内の そのファイルが実行可能ではなくて、作業コピー中では実行可能だった場合、 アップデート後には作業コピーのそのファイルは実行可能ではなくなってし まいます。自分のファイルのパーミッションが黙って変更されてしまうとい うのは非常にいらだたしいことです。これが起こったら、まずリポジトリを チェックし、対応する RCS ファイルを適切なパーミッションに設定して解 決するかどうか見てみてください。
最近、CVS に PreservePermissions
という機能が追加されました。
この機能はこのような問題を少しは軽減するかもしれません。しかし、この
機能を使うと、考えもしなかった他の結果をうむことになるかもしれません
(無条件にこの機能を推薦しなかったのはこれが理由です)。CVSROOT/config
に PreservePermissions=yes
を書く前に、Cederqvist マニュアル
の config と Special Files のノードをよく読んでくださ
いね。