- まず最初に作成したソース・ファイルを main.c とします.(下図参照) ソースの中にタグ $Date$, $Revision$ を挿入してあります.(この2つのタグを活用しなければ
RCS を利用するメリットがありません)
- ci (check in) コマンドを使用して、最初のバージョンのバックアップを取ります.(バージョンNo.は 1.1 になります)
Z:\source>ci main.c
main.c,v <-- main.c
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> 1st source file
>> .
initial revision: 1.1
done
バックアップを取ると main.c は下図のように自動的に修正されます. 元のファイル中のタグ $Date$, $Revision$ は自動的にバックアップ日時、バージョンNo.を含む形式に変更されます.
- 次にソース main.c に修正を加えて再び ci コマンドでバックアップを取ります.
修正点は ci コマンドの log message (コメント)記述行にあるように、"int", "return
0"の追加です.
Z:\source>ci main.c
main.c,v <-- main.c
new revision: 1.2; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> add "int"
>> add "return 0"
>> .
done
2度目のバックアップ後も main.c 中のタグは次のように自動的に修正されます.(バックアップ日時とバージョンNo.が更新されています)
- さらにソースの修正と3回目のバックアップをすると次のようになります.
Z:\source>ci main.c
main.c,v <-- main.c
new revision: 1.3; previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> change printf
>> .
done
- バージョンNo.(Revision) 1.1, 1.2, 1.3 と順次更新、バックアップしたところで、古いバージョン 1.2 を復元するのに
co (check out) コマンドを使います.
Z:\source>co main.c 1.2
main.c,v --> main.c
revision 1.2
done
- 復元されたバージョン 1.2 のソースを修正後 ci コマンドでバックアップを再び取ると、バージョンは過去の番号と単純に連番となる 1.4 になります.(作成したバッチ・プログラムではバージョンNo.の分岐はしません)
Z:\source>ci main.c
main.c,v <-- main.c
new revision: 1.4; previous revision: 1.3
enter log message, terminated with single '.' or end of file:
>> add printf
>> .
done
- バックアップしたバージョン間の差分の抽出には rcsdiff コマンドを使います.(大昔の diff と比較すると今の diff の差分表示の可読性は向上しています)
Z:\source>rcsdiff main.c 1.1 1.4
===================================================================
RCS file: main.c,v
retrieving revision 1.1
retrieving revision 1.4
diff -r1.1 -r1.4
1,2c1,2
< // $Date: 2024-06-04 14:56:43+09 $
< // $Revision: 1.1 $
---
> // $Date: 2024-06-04 15:46:49+09 $
> // $Revision: 1.4 $
5,7c5,9
< main(){
< printf("$Date: 2024-06-04 14:56:43+09 $");
< printf("$Revision: 1.1 $");
---
> int main(){
> printf("$Date: 2024-06-04 15:46:49+09 $");
> printf("$Revision: 1.4 $");
> printf("foo\n");
> return 0
- バックアップした各バージョンの一覧表示には rlog コマンドを使います.
Z:\source>rlog main.c
RCS file: main.c,v
Working file: main.c
head: 1.4
branch:
locks: strict
kth: 1.4
access list:
symbolic names:
keyword substitution: kv
total revisions: 4; selected revisions: 4
description:
1st source file
----------------------------
revision 1.4 locked by: kth;
date: 2024-06-04 15:46:49+09; author: kth; state: Exp; lines: +3 -1
add printf
----------------------------
revision 1.3
date: 2024-06-04 15:45:20+09; author: kth; state: Exp; lines: +3 -4
change printf
----------------------------
revision 1.2
date: 2024-06-04 15:44:08+09; author: kth; state: Exp; lines: +6 -5
add "int"
add "return 0"
----------------------------
revision 1.1
date: 2024-06-04 14:56:43+09; author: kth; state: Exp;
Initial revision
=============================================================================
- 以上のように RCS (Revision Control System) を活用すると、テキスト・ファイルに対して連番のバージョンNo.をつけてバックアップを取る、バックアップした過去のバージョンを復元する、バージョン間の差分を確認するという一連の作業を要領よく処理できるようになります.