そろそろrcsも分かってきましたが、使い道がまだ見出せません。
今回は、ファイルを修正した時の、管理ファイル内部の変化を見ていきます。
まずは、RCSディレクトリを作成して、実験用ファイル準備。
takk@deb9:~/tmp$ ls takk@deb9:~/tmp$ mkdir RCS takk@deb9:~/tmp$ echo hello_1>file1.txt takk@deb9:~/tmp$ rcs -i file1.txt RCS file: RCS/file1.txt,v enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! >> init >> . done takk@deb9:~/tmp$ ci file1.txt RCS/file1.txt,v <-- file1.txt initial revision: 1.1 done takk@deb9:~/tmp$ ls RCS takk@deb9:~/tmp$
現状のRCSファイル(,v)を確認してみます。
takk@deb9:~/tmp$ cat RCS/file1.txt,v > 1.1 takk@deb9:~/tmp$ cat 1.1 head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2018.10.12.12.04.46; author takk; state Exp; branches; next ; desc @init @ 1.1 log @Initial revision @ text @hello @ takk@deb9:~/tmp$
これは以前見たことありますね。
次は、チェックアウト、ファイル更新後、チェックイン。
takk@deb9:~/tmp$ co -l ./file1.txt ./RCS/file1.txt,v --> ./file1.txt revision 1.1 (locked) done takk@deb9:~/tmp$ vi file1.txt takk@deb9:~/tmp$ echo hello_2>>file1.txt takk@deb9:~/tmp$ ci ./file1.txt ./RCS/file1.txt,v <-- ./file1.txt new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> 2nd check in >> . done takk@deb9:~/tmp$
レビジョンが上がりました。
RCSファイルはどんな変化をしたでしょうか。
差分を左右に並べて確認します。(追加行は>で、変更行が|マークです)
takk@deb9:~/tmp$ diff -y -W50 1.1 1.2 | expand -t8 head 1.1; | head 1.2; access; access; symbols; symbols; locks; strict; locks; strict; comment @# @; comment @# @; > 1.2 > date 2018.10.12.12 > branches; > next 1.1; > 1.1 1.1 date 2018.10.12.12 date 2018.10.12.12 branches; branches; next ; next ; desc desc @init @init @ @ > 1.2 > log > @2nd check in > @ > text > @hello_1 > hello_2 > @ > > 1.1 1.1 log log @Initial revision @Initial revision @ @ text text @hello_1 | @d2 1 @ @ takk@deb9:~/tmp$
では一つずつ見ていきます。
head 1.1; | head 1.2;
headは当然最新のレビジョンに更新されますね。
> 1.2 > date 2018.10.12.12 > branches; > next 1.1; > 1.1 1.1 date 2018.10.12.12 date 2018.10.12.12 branches; branches; next ; next ;
レビジョンと、日付。diffの左右出力で文字数制限したので、隠れて見えないですがauthor等の情報が追加されています。前のレビジョン(next)の情報も追加されました。
> 1.2 > log > @2nd check in > @ > text > @hello_1 > hello_2 > @ > >
これがログと、変更内容本体(@から@までの内容)ですね。headの内容をチェックアウトするときは、最速で取得できるように、そのままのテキストとなっているようです。
前のレビジョン1.1を取得するときは、d2となっているので、headの内容からhello_2と改行を消した内容でチェックアウトされます。
1.1 1.1 log log @Initial revision @Initial revision @ @ text text @hello_1 | @d2 1 @ @
この管理ファイルの仕組みを利用すると何か出来そうに思えますが、今のところ何も思い浮かびません。
コメント