レビジョンを削除する(rcs)

rcsコマンドです。

レビジョンの削除オプション、-oを使います。
man rcsより

       -orange
              range で指定したリビジョンを削除します。 range がただ 1 つのリビ
              ジョン番号ならば、そのリビジョンを削除します。 range  に枝番号が
              含まれれば、その枝の最新のリビジョンを削除します。  rev1:rev2 形
              式の範囲指定では、同じ枝上の rev1 から  rev2  までのすべてのリビ
              ジョンが削除されます。  :rev は枝の開始から rev までのリビジョン
              を、 rev:  は同じ枝上の  rev  以降のリビジョンのすべてを削除しま
              す。 削除されるリビジョンにロックや枝があってはいけません。

ブランチナンバー1の最初の方のレビジョンはこのようになっています。

takk@deb9:~/tmp$ rcs log test2.c | grep ^rev | tail
revision 1.9
revision 1.8
revision 1.7
revision 1.6
revision 1.5
revision 1.4
revision 1.3
revision 1.2
revision 1.1
revision 1.10.1.1
takk@deb9:~/tmp$

-oオプションを使って、レビジョン1.2を削除してみましょう。

takk@deb9:~/tmp$ rcs -o1.2 test2.c
RCS file: RCS/test2.c,v
deleting revision 1.2
done
takk@deb9:~/tmp$

消えたでしょうか。logを確認します。

takk@deb9:~/tmp$ rcs log test2.c | grep ^rev | tail
revision 1.10
revision 1.9
revision 1.8
revision 1.7
revision 1.6
revision 1.5
revision 1.4
revision 1.3
revision 1.1
revision 1.10.1.1
takk@deb9:~/tmp$

消えていますね。

次は1.3~1.9を削除してみましょう。

takk@deb9:~/tmp$ rcs -o1.3:1.9 test2.c
RCS file: RCS/test2.c,v
deleting revision 1.9
deleting revision 1.8
deleting revision 1.7
deleting revision 1.6
deleting revision 1.5
deleting revision 1.4
deleting revision 1.3
done
takk@deb9:~/tmp$

logを確認。

takk@deb9:~/tmp$ rcs log test2.c | grep ^rev | tail
revision 1.17
revision 1.16
revision 1.15
revision 1.14
revision 1.13
revision 1.12
revision 1.11
revision 1.10
revision 1.1
revision 1.10.1.1
takk@deb9:~/tmp$

見事に消えました。

では、ブランチナンバー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: 97;    selected revisions: 1
description:
test
----------------------------
revision 1.102
date: 2018/09/23 07:04:12;  author: takk;  state: Exp;  lines: +1 -1
log5
=============================================================================
takk@deb9:~/tmp$

1.102ですね。

1.10~1.102を削除。

takk@deb9:~/tmp$ rcs -o1.10:1.102 test2.c
RCS file: RCS/test2.c,v
deleting revision 1.102
deleting revision 1.101

~省略~

deleting revision 1.14
deleting revision 1.13
deleting revision 1.12
deleting revision 1.11
rcs: RCS/test2.c,v: can't remove branch point 1.10
takk@deb9:~/tmp$

なんか出ました。1.10は、ブランチポイントがあるので、消せないようです。

途中までのレビジョンは消えたのでしょうか。確認します。

takk@deb9:~/tmp$ rcs log test2.c | grep ^rev | tail
revision 1.17
revision 1.16
revision 1.15
revision 1.14
revision 1.13
revision 1.12
revision 1.11
revision 1.10
revision 1.1
revision 1.10.1.1
takk@deb9:~/tmp$

消えてませんね。
エラーになるとすべての削除が無効になるということでしょうか。
1.10を外して指定してみます。

takk@deb9:~/tmp$ rcs -o1.11:1.102 test2.c
RCS file: RCS/test2.c,v
deleting revision 1.102
deleting revision 1.101

~省略~

deleting revision 1.15
deleting revision 1.14
deleting revision 1.13
deleting revision 1.12
deleting revision 1.11
done
takk@deb9:~/tmp$

削除できたようですね。

takk@deb9:~/tmp$ rcs log test2.c | grep ^rev
revision 2.2
revision 2.1
revision 1.10
revision 1.1
revision 1.10.1.1
takk@deb9:~/tmp$

Leave a Reply

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

CAPTCHA