個人で使っているFreeBSD機において、/etcや/usr/local/etc などにある設定ファイルの変更履歴をrcsで記録するための、ざっくりとしたメモです。setenv RCSINIT -zLTは忘れないようにしたい。あとemacs。お好みでvim+rcs-menu.vimなど。
新しい設定を書き起こすとき
設定ファイルのパーミッションに厳しいプログラムを使うことがあったのですが、rcsやcvsなどではファイルのパーミッションを保存しておくのが難しいのです。しかもどんな設定にすればいいのか忘れやすい。そこで、rcsでファイルを初めてチェックインするときに、log ではなく、description という、ファイルの説明メッセージを書く部分にメモします。意図が違うとかはまあおいといて、どうすればいいかというと……( /usr/local/etc/target.conf を例にする。)
# cd /usr/local/etc/
# mkdir RCS (ない場合は作るべき。後述。)
# ls -l target.conf | ci -i -l target.conf (これでパーミッション情報をメモする。)
# rcs -U target.conf
わざわざRCSディレクトリを作るのは、 find / -not -path '/usr/home/*' -name RCS -type d で探しやすくするため。
ファイルを変更した際には ci -l でチェックインします。-lを忘れるとチェックインしたときにファイルが消えてしまうので注意。
ls の引数と ci の引数に同じファイル名を二度打ちしないといけないところがいまいちかも。
パイプなど使わなくても、ci -i 時のインタラクティブ入力で、ls -lの結果をターミナル窓でコピペしてもOK。情報を残しておくということが重要なのだろうと思います。
何故cvs, subversion, gitではなく rcs なのか?
- FreeBSDに標準で入っているから
- 単に使い慣れているから
- パスワード系のファイルも取り扱う /etc の下を丸ごとリポジトリにコピーしてしまうのはあまりよくないかなと思ったから(多分対処法はある……んじゃないかな?)
rootのままチェックインだのなんだのすることに対する抵抗感はsudoなどで払拭できるか?(未確認)
バックアップは?
設定ファイルが散逸してしまうことは間違いないので、RCSディレクトリをこまめに探しておいて保存するしかないかも?
複数台の設定を管理するノウハウはまた別にあると思いますが、それはまた別の機会に。
追記:linuxでお使いの場合は rcs を導入すれば同じような対応でOKのはず。例えば debian 系 ( ubuntu など ) であれば apt-get install rcs すればよいです。