バージョン管理といえばCVSとかここでもやってるSubversionが有名ですが
かなり古いタイプのrcsとかよりももっと古いかもしれないsccsという
バージョン管理ソフトを使ってみます。
用途はアプリケーションソースのバージョン管理ではなく、
httpd等のコンフィグファイルのバージョン管理です。
いちいちコピーしてバックアップするとわけわかめになりがちなので
これを使ってすっきりさせます。
コンフィグファイルは基本的に/usr/local/confなどに全部おいて
設定を変えたら各サービスの所定の位置へ上書きコピーをする方法をとります。
HP: http://cssc.sourceforge.net/
いつの間にかGNUで管理しているようで、http://ftp.gnu.org/gnu/cssc/に移動していました。
バージョンも1.3.0になってましたよ。。
インストール
cd /usr/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/cssc/CSSC-1.0.1.tar.gz
tar zvxf CSSC-1.0.1.tar.gz
cd CSSC-1.0.1
./configure --enable-binary
make
make install
PATHの設定
vi ~/.bash_profile
PATH=$PATH:/usr/local/libexec/cssc
コマンドの説明
SCCSコマンド | 説明 |
---|---|
admin | SCCSファイルの生成と管理を行う。 |
cdc | SCCSファイル内にあるデルタの注釈を変更する。 |
delta | ソースファイルを元に、SCCSファイルを修正する。 |
get | SCCSファイルからソースファイルを復元する。 |
help | SCCSコマンドの使用方法を示す。 |
prs | SCCSの管理レコード情報を出力する。 |
rmdel | SCCSファイルからデルタを取り除く。 |
sact | 現在編集中のSCCSファイルの状況を出力する。 |
sccsdiff | SCCSファイル中の2つのデルタを比較し、違いを出力する。 |
unget | getコマンドをキャンセルする。 |
val | 渡された引数を元に、そのSCCSファイルが 有効なものかどうかをチェックする。 |
what | SCCSのID情報からソースファイルやプロダクトを検索する。 |
使い方(ファイルの説明)
s.xxxファイル | バージョン管理を行うファイル1つにつき、 バージョン管理用のファイル1つを用意する。 このファイルをSファイルと呼ぶ。 |
p.xxxファイル | get -e コマンドによって作られる一時ファイル。 ファイル編集の為に復元される。 deltaコマンドの実行により、自動的に削除される。 |
delta | 前のバージョンと現在のバージョンの差異の部分。 |
sファイルの作成
touch test.txt
admin -itest.txt s.test.txt
admin: warning: s.test.txt: No id keywords.
ls
test.txt s.test.txt
rm test.txt
確認
prs s.test.txt
prs s.smb.conf.bak
s.test.txt:
D 1.1 06/07/27 08:19:38 root 1 0 00053/00000/00000
MRs:
COMMENTS:
date and time created 06/07/27 08:19:38 by root
ファイルの取り出しとデルタの登録
get -e s.test.txt
1.1
new delta 1.2
xx lines
ls
test.txt p.test.txt s.test.txt
変更をくわえたら
delta s.test.txt
comments? (コメントを適当にいれる)
delta: warning: test.txt: No id keywords.
1.2
1 inserted
0 deleted
0 unchanged
ls
s.test.txt
バージョン番号について
SID:SCCS IDentification(SCCS識別文字列)の略。
Sファイルに登録されている、それぞれのデルタを識別する為の番号で、
このSIDを使って扱うバージョンを指定する。
形式1 | リリース番号.レベル番号 |
形式2 | リリース番号.レベル番号.分岐番号.一連番号 |
R.L.B.S |
リリース番号の変更
get -e -r2 s.test.txt
1.2
new delta 2.1
xx lines
特定バージョンの取り出し
get -rSID s.test.txt
形式1 リリース番号
形式2 リリース番号.レベル番号
形式3 リリース番号.レベル番号.分岐番号
形式4 リリース番号.レベル番号.分岐番号.一連番号
*形式1、3は最後の部分を省略していて、
リリース番号.MAXレベル番号のバージョンが取り出される。
get -r1 s.test.txt
1.3
xx lines
分岐バージョンの作成
get -e -r1.2 s.test.txt
1.2
new delta 1.2.1.1
xx lines
get -e コマンドの取り消し
unget s.test.txt
*Sファイルから取り出されたファイルと、pファイルが削除される。
ヘルプ機能
メッセージ番号
SCCS関連コマンドでは、エラーメッセージの最後に 例えば
(cm7)のような括弧で括られた文字と数字が表示される
help メッセージ番号
help コマンド名
メッセージ番号を指定するとエラーの詳細が、コマンド名を指定した場合は
コマンドの入力形式が指定される。コマンド名を指定したとき出力される
[](ブラケット)で括られた部分は省略可能。
コメントの表示と変更
deltaコマンド実行時に登録したコメントを変更する。
cdc -rSID -y"×××" s.test.txt
*コメントは変更前のもの、変更後のもの両方が表示される。
1.1のデルタにコメントをつけたい時。
cdc -r1.1 s.test.txt
admin -itest.txt -y"×××" s.test.txt
デルタの整理
デルタを削除する時。
rmdel -rSID s.test.txt
*ここで指定できるSIDは、最新のバージョン或いは
分岐バージョンの末端のSIDのみ。
IDキーワード
SCCSで管理するファイルの中に、バージョン管理に関する情報を
埋め込む為に利用。
%A% | IDキーワード%Z%%Y% %M% %I%%Z%の並びと同じ。 |
%B% | 分岐番号 |
%C% | ファイルの行番号 |
%D% | 年/月/日の形式の日付 |
%E% | 最新のデルタが作成された年/月/日 |
%F% | Sファイル名 |
%G% | 最新のデルタが作成された月/日/年 |
%H% | 月/日/年の形式の日付 |
%I% | デルタのSID |
%L% | レベル番号 |
%M% | Sファイル中のMフラグの値 |
%P% | Sファイルの絶対パス名 |
%Q% | Sファイル中のqフラグの値 |
%R% | リリース番号 |
%S% | 一連番号 |
%T% | 現在の時刻 |
%U% | 最新のデルタが作成された時刻 |
%W% | IDキーワード%Z%%M%<タブ>%I%の並びと同じ |
%Y% | Sファイル中のtフラグの値 |
%Z% | 文字列 ”@(#)” |
チェックサムの修正
SCCSファイルに長い間アクセスしなかったり、他のシステムからファイルを変換
した場合に、getコマンドによるファイルの復元ができないことがある。
そういう時には、チェックサムを修正する。
admin -z S.file
チェックサムが正しいかどうかを確認するには、以下のコマンドを実行する。
admin -h S.file
実際にやる場合の一連の流れ(おさらい)
cd /usr/local/conf
cp /usr/local/apache2/conf/httpd.conf .
admin -ihttpd.conf s.httpd.conf
admin: warning: s.httpd.conf: No id keywords.
rm httpd.conf
ls
s.httpd.conf
get -e s.httpd.conf
ls
httpd.conf p.httpd.conf s.httpd.conf
vi httpd.conf
~~~
delta s.httpd.conf
comments? test
delta: warning: httpd.conf: No id keywords.
1.2
1 inserted
0 deleted
0 unchanged
ls
s.httpd.conf
get s.httpd.conf
get: warning: s.httpd.conf: No id keywords.
1.2
xxx lines
ls
httpd.conf s.httpd.conf
cp httpd.conf /usr/local/apache2/conf
こんな感じで設定ファイルの管理を行っていきましょう?
コメントを追加