シンボリック名を使う(rcs)

まだrcsコマンドやってます。
今回は、シンボリック名使ってみます。タグみたいなものでしょうか。
man rcsの-nオプションの解説を読んでみます。

       -nname[:[rev]]
              枝またはリビジョン rev にシンボリック名 name を関連付けます。  :
              も rev も省略した場合、シンボリック名 name は削除されます。 name
              がすでに別の  リビジョンに関連付けられていた場合はエラーとなりま
              す。  rev がシンボリック名の場合も name との関連付けは番号によっ
              て行われます。枝番号に .  を付加したものは、その枝での最新のリビ
              ジョンを示します。  : だけで rev を省略した場合、デフォルト枝(通
              常は幹)の最新のリビジョンが関連付けられます。         たとえば、
              rcs -nname: RCS/*  はすべての RCS ファイルの最新のリビジョンに対
              してシンボリック名          name          を関連付けます。一方、
              rcs -nname:$ RCS/* は各 RCS ファイルに対応したワークファイル中の
              キーワードに含まれる リビジョン番号と name を関連付けます。

単純にレビジョンの別名のように思えます。
使ってみましょう。

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

これでレビジョン1.3がTEST1というシンボリック名で指定できるようになりました。
どうやって使うのか。。。ヘルプを見てみます。

takk@deb9:~/tmp$ rcs log --help

~省略~

Options:
  -L            Ignore RCS files with no locks set.
  -R            Print the RCS file name only.
  -h            Print only the "header" information.
  -t            Like -h, but also include the description.
  -N            Omit symbolic names.
  -b            Select the default branch.
  -dDATES       Select revisions in the range DATES, with spec:
                  D      -- single revision D or earlier
                  D1<D2  -- between D1 and D2, exclusive
                  D2>D1  -- likewise
                  <D, D> -- before D
                  >D, D< -- after D
                Use <= or >= to make ranges inclusive; DATES
                may also be a list of semicolon-separated specs.
  -l[WHO]       Select revisions locked by WHO (comma-separated list)
                only, or by anyone if WHO is omitted.
  -r[REVS]      Select revisions in REVS, a comma-separated list of
                range specs, one of: REV, REV:, :REV, REV1:REV2
  -sSTATES      Select revisions with state in STATES (comma-separated list).
  -w[WHO]       Select revisions checked in by WHO (comma-separated list),
                or by the user if WHO is omitted.
  -T            No effect; included for compatibility with other commands.
  -V            Obsolete; do not use.
  -VN           Emulate RCS version N.
  -xSUFF        Specify SUFF as a slash-separated list of suffixes
                used to identify RCS file names.
  -zZONE        Specify date output format in keyword-substitution.
  -q            No effect, included for consistency with other commands.

~省略~

シンボリック名を指定するオプションがないので、-rオプションで直接指定すれば良いのかもしれません。

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

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

-rオプションで指定できましたね。

では今度は、作成したシンボリック名を削除します。
-nオプションでシンボリック名を指定する時に、レビジョンを指定しなければ削除になります。

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

削除されました。
これで、TEST1では指定できなくなったと思います。

takk@deb9:~/tmp$ rcs log -rTEST1 test2.c
log: RCS/test2.c,v: Symbolic name `TEST1' is undefined.
takk@deb9:~/tmp$

Leave a Reply

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

CAPTCHA