自動でテキスト編集してチェックイン(rcs)


アニメ『少女たちは荒野を目指す』(2016)

どうやって楽しめばいいかイマイチ分かりません。美少女ゲームを製作するアニメなので「冴えカノ」と比べてしまいます。「荒野」の方は、黒田砂雪っていう女子高生がプロデューサーですが、 「冴えカノ」の倫理くんのどうしても美少女ゲームを作らなきゃいけない強い動機に比べて、黒田さんの方の意思がまったく感じられません。やる気あるんだろうか、と思いました。まあそれがストーリーに裏づいてて表現しているものなのか分かりません。黒田さんの文太郎に丸投げ姿勢に関しても、ほんと腹立たしい。アニメを見て怒ってるってある意味新鮮なのですが、それが狙いなんだろうかとも思いました。
視聴してて、あれ?と気づく。
まるで仕事と同じ。黒田さんのようなまる投げ上司がいて、なんでもこなす文太郎のような人間が仕事の80%をこなす。みんな「やらなきゃいけない」と責任を口にするけど、面白くて仕事をしている人は皆無。そんな仕事と同じ状況がアニメからも伝わってきて、そりゃあ面白くないですよね。

rcsを使う(その9)」で、手動でレビジョンを上げていきましたが、
せっかくコマンドラインを使っているので、こういうテスト用の操作こそ、自動化するべきでした。

ということで自動化。まず新規ファイルtest2.cを作ります。

takk@deb9:~/tmp$ echo HELLO1>test2.c
takk@deb9:~/tmp$ cat test2.c
HELLO1
takk@deb9:~/tmp$

内容は、HELLO1という文字列一行のみで、チェックインする度に数字をカウントアップしていきます。
rcsにこのファイルを登録するため-iオプションを実行し、チェックイン、チェックアウト、これで準備完了です。

takk@deb9:~/tmp$ rcs -i test2.c
RCS file: RCS/test2.c,v
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> test
>> .
done
takk@deb9:~/tmp$ rcs ci test2.c
RCS/test2.c,v  <--  test2.c
initial revision: 1.1
done
takk@deb9:~/tmp$ rcs co test2.c
RCS/test2.c,v  -->  test2.c
revision 1.1
done
takk@deb9:~/tmp$

vimで自動化のスクリプト作成。

takk@deb9:~/tmp$ vi t.sh

~以下のスクリプト作成~

takk@deb9:~/tmp$ cat -n t.sh
     1  chmod 644 test2.c
     2  rcs -l test2.c
     3  perl -pe 's/HELLO(\d+)/sprintf("HELLO%d",1 + $1)/e' -i test2.c
     4  rcs ci -m"AUTO CHECK IN" test2.c
     5  rcs co test2.c
takk@deb9:~/tmp$

1、2行目で、ファイル編集可能な状態にしたら、3行目で編集します。
perlの-iオプションで破壊的置換を行います。
あとは、4,5行目でチェックイン、チェックアウト。

1回実行してみます。

takk@deb9:~/tmp$ . t.sh
RCS file: RCS/test2.c,v
1.1 locked
done
RCS/test2.c,v  <--  test2.c
new revision: 1.2; previous revision: 1.1
done
RCS/test2.c,v  -->  test2.c
revision 1.2
done
takk@deb9:~/tmp$

レビジョン更新されました。内容も更新されているでしょうか。

takk@deb9:~/tmp$ cat test2.c
HELLO2
takk@deb9:~/tmp$

問題なさそうです。

差分を確認してみます。

takk@deb9:~/tmp$ rcs diff -r1.1 test2.c
===================================================================
RCS file: RCS/test2.c,v
retrieving revision 1.1
diff -r1.1 test2.c
1c1
< HELLO1
---
> HELLO2
takk@deb9:~/tmp$

さあ100個ぐらいレビジョンアップしてみましょう。

takk@deb9:~/tmp$ for i in `seq 100`;do . t.sh;done
RCS file: RCS/test2.c,v
1.2 locked
done
RCS/test2.c,v  <--  test2.c
new revision: 1.3; previous revision: 1.2
done
RCS/test2.c,v  -->  test2.c
revision 1.3
done

~省略~

RCS file: RCS/test2.c,v
1.101 locked
done
RCS/test2.c,v  <--  test2.c
new revision: 1.102; previous revision: 1.101
done
RCS/test2.c,v  -->  test2.c
revision 1.102
done

大量の表示がコマンドラインを流れました。
最後のrevisionで1.102まで上がったこと分かりますが、一応 headレビジョンを確認しましょう。

takk@deb9:~/tmp$ rcs log test2.c | grep ^head
head: 1.102
takk@deb9:~/tmp$

Leave a Reply

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

CAPTCHA