第24章 シンボリックタグ

プロジェクトがより大きく複雑になるにつれ、あるarchバージョンにある 特定のリビジョンにシンボリックな名前を付けることが便利になることが 多くなります。

たとえば、hello-world プロジェクトがたくさんのリビジョンを 持っているとします:

        mainline
        --------
        base-0
        patch-1
        patch-2
        ....
        patch-23

開発が進むにつれ、ときどきおこる「スナップショット」リリースは、 主系からのものになります。すべてのリビジョンが スナップショットになるわけではありませんが、いくつかはそうなります。

どのリビジョンがスナップショットになるかを示すラベルを用意するのは 便利です:

        mainline
        --------
        base-0
        patch-1         snapshot 0
        patch-2
        ....
        patch-12        snapshot 2
        ....
        patch-23        snapshot 3

前に導入したtag コマンドはこの目的に利用することができます (ローカルアーカイブにリモートプロジェクトのブランチを作ること項参照)。

最初にtagに出会ったとき、基本的なブランチの base-0 リビジョンを作るのに使われただけでした。 それはまたリビジョンがタグであるようなすべての ブランチでも利用することができます。

hello-world––snapshots––0.1という名前のブランチを作っていると しましょう。図で書くと:

        mainline                        snapshots
        --------                        ---------
        base-0                --------> base-0 (tag)
        patch-1 -------------'  ------> patch-1 (tag)
        patch-2                '
        ....                  '
        patch-12 ------------'
        ....
        patch-23

patch-23:のためのsnapshot タグを作るには:

        % larch tag hello-world--mainline--0.1--patch-23 \
                    hello-world--snapshots--0.1

その後では:

        mainline                        snapshots
        --------                        ---------
        base-0                --------> base-0 (tag)
        patch-1 -------------'  ------> patch-1 (tag)
        patch-2                ' -----> patch-2 (tag)
        ....                  ' '
        patch-12 ------------' '
        ....                  '
        patch-23 ------------'

結果として、snapshots ブランチは、履歴つきの「シンボル名」の一種です。 以下のコマンドで、そのシンボルによって名付けられた最新リビジョンを手に入れることが できます:

        % larch get hello-world--snapshots--0.1

そして特定のリビジョンを名付けることによってもっと早いリビジョンも手に入れる ことができます。たとえば:

        % larch get hello-world--snapshots--0.1--patch-1

利用に関する注意: 大雑把に言って、ブランチは commit ベースのものであるか (base-0 以降のすべてのリビジョンは commitによって作られます) タグベースのブランチ(すべてのリビジョンはtag によって作られるか)です。 replay, update, star-merge のようなコマンドは そのルールにしたがっているという前提の上に成立しています。 committag をひとつのブランチ上で混ぜて使った場合の動作は 一般的には保証されません。