The Hackerlab at regexps.com

シンボリックタグ

up: arch Meets hello-world
next: 変更点の慎重な選択 (cherrypicking)
prev: 開発ブランチ -- star-merge を使った共同作業

プロジェクトがより大きくより複雑になるに従い、 arch バージョン内の特定のリビジョンに記号的な名前をつけることができると 便利なことがよくあります.

例えば、hello-world プロジェクトに沢山のリビジョンがあるとしましょう:


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



開発が進むにつれて, mainline から 時折, "スナップショット" が公開されることがあります. 全てのリビジョンが"スナップショット"になるとは限りませんが, そうなるものもあります.

どのリビジョンがスナップショットになったかのラベルを提供すると 便利なことでしょう:


        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 タグを作るには:


        % tla 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 ブランチは, 履歴の付いた "シンボル名" の一種です. 最新のリビジョンを, 対応するシンボルで得ることができます:

        % tla get hello-world--snapshots--0.1

そして, より以前のリビジョンを, 特定のリビジョンに名前を つけて得ることもできます. たとえば:

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

使用上の注意: 経験則として、 ブランチは, commit を基本としたブランチ (base-0 以降全てのリビジョンが commit で 作成されたもの)か, あるいは, タグを基本としたブランチ (全てのリビジョンが tag で作成されたもの)の どちらかであるべきです. replay, update, star-merge のようなコマンドは, その規則を貫くという仮定に基づいてます。 変な状況では, committag を 一つのブランチで混在させたくなりますが, 一般的に 勧められることではありません.

arch Meets hello-world: A Tutorial Introduction to The arch Revision Control System
The Hackerlab at regexps.com