複数ログ修正にforを使いたくない(rcs)

-mオプションは、:によるレビジョンの範囲指定ができないので、前回、forで回してログの一括修正しました。
しかしもっと手軽に-mオプションを使いたいため、forさえも使いたくありません。
-mオプションを複数使ったらどうなるでしょう。試してみます。

takk@deb9:~/tmp$ rcs -m1.1:"new log3" -m1.2:"new log4" test2.c

レビジョン1.1と1.2のログが変更されていれば、使えますね。

takk@deb9:~/tmp$ rcs log -r1.1:1.4 test2.c

RCS file: RCS/test2.c,v
Working file: test2.c
head: 2.2
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 105;   selected revisions: 4
description:
test
----------------------------
revision 1.4
date: 2018/09/23 07:04:11;  author: takk;  state: Exp;  lines: +1 -1
new log2
----------------------------
revision 1.3
date: 2018/09/23 07:04:11;  author: takk;  state: Exp;  lines: +1 -1
new log2
----------------------------
revision 1.2
date: 2018/09/23 07:00:55;  author: takk;  state: Exp;  lines: +1 -1
new log4
----------------------------
revision 1.1
date: 2018/09/23 06:56:47;  author: takk;  state: Exp;
new log3
=============================================================================
takk@deb9:~/tmp$

これでforで回さなくても、-mオプションを複数つければ、一括変更ができそうです。

printfコマンドで、-mオプションの書式を作ります。パラメータにレビジョンナンバーを並べるだけでよいです。

takk@deb9:~/tmp$ printf ' -m1.%d:"new log5"' 1 2 3 | xargs echo
-m1.1:new log5 -m1.2:new log5 -m1.3:new log5
takk@deb9:~/tmp$

レビジョン1を全部変更したいので、1.*の最新レビジョンを確認。

takk@deb9:~/tmp$ rcs log -r1. test2.c

RCS file: RCS/test2.c,v
Working file: test2.c
head: 2.2
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 105;   selected revisions: 1
description:
test
----------------------------
revision 1.102
date: 2018/09/23 07:04:12;  author: takk;  state: Exp;  lines: +1 -1
new log2
=============================================================================
takk@deb9:~/tmp$

1.102ですね。

1~102を生成すればよいです。rcsコマンド実行してみましょう。

takk@deb9:~/tmp$ printf ' -m1.%d:log5' `seq 102` | xargs rcs
rcs: no input file
rcs aborted
takk@deb9:~/tmp$

あ、ファイル名を忘れてました。ファイル名は、パラメータの一番最後に指定しないといけないので、工夫が必要ですね。

takk@deb9:~/tmp$ aaa=`printf ' -m1.%d:log5' $(seq 102)`

実行。

takk@deb9:~/tmp$ rcs $aaa test2.c
RCS file: RCS/test2.c,v
done
takk@deb9:~/tmp$

全部変更できたでしょうか。
log5という文字列なので、grepしてみると、

takk@deb9:~/tmp$ rcs log -r1 test2.c | grep ^log5$ | wc -l
102
takk@deb9:~/tmp$

102個なので、全ログ変更できましたね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA