The Hackerlab at regexps.com

共有, 公開アーカイブ

up: arch Meets hello-world
next: update/commit を使った共同作業
prev: 以前のリビジョンの取得

ここまでで習ったことは, 最初のアーカイブを作ること, プロジェクトを 始めること, 最初のソ-スとその後の変更をチェックインすること, それと, 過去の revision を取得することでした.

本章では, ネットワーク上で取得可能なアーカイブの作り方を習います. そして, 複数のプログラマが一つのアーカイブを共有する方法を習いはじめます.

ネットワークでアクセスするためにアーカイブを登録する

アーカイブが, 論理名および物理的な位置の両方を持ってることを思い出して下さい:

        % tla archives
        lord@emf.net--2003-example
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
          |     /usr/lord/{archives}/2003-example
          |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          |                     |
          |              アーカイブの位置
          |
        アーカイブ名

(新規アーカイブの作成参照.)

アーカイブのなかにはネットワークからアクセスできるものもあります. 現在は以下のプロトコルが使えます:

        FTP
        SFTP
        WebDAV
        plain HTTP

本章の後のほうで, このようなアーカイブを作成する方法を習います.

まず覚えるべきことは, このようなアーカイブにアクセスするために, アーカイブ名と物理的な位置を登録することです. 物理的な位置は URL を 使って指定します.

例えば, HTTP または WebDAV のアーカイブにアクセスするには:

    % tla register-archive lord@emf.net--2003b \
            http://regexps.srparish.net/{archives}/lord@emf.net--2003b

FTP アーカイブの場合は:

    % tla register-archive lord@regexps.com--2002 \
            ftp://ftp.regexps.com/{archives}/lord@regexps.com--2002

上記のコマンドが有効に働いたのを確認するには:

    % tla archives
    lord@emf.net--2003b
            http://regexps.srparish.net/{archives}/lord@emf.net--2003b
    lord@emf.net--2003-example
            /usr/lord/examples/{archives}/2003-example
    lord@regexps.com--2002
            ftp://ftp.regexps.com/{archives}/lord@regexps.com--2002

いくつかのアーカイブでいちどに作業する

追加のアーカイブを登録した後, どのようにしてアクセスするのでしょうか。

自明な方法は, 使いたいアーカイブをデフォルトにすることです:


        % tla my-default-archive lord@emf.net--2003

        % tla categories
        [... リモートアーカイブのカテゴリ ...]


もちろん, デフォルトアーカイブを変更し続けるのは不便でしょう. とりあえず, デフォルトアーカイブを元のに戻しましょう:

        % tla my-default-archive lord@emf.net--2003-example

リモート・アーカイブにアクセスする方法が, 他に二つあります:

アーカイブを -A で選択する

アーカイブに作用するすべてのコマンドは -A オプションを受け付けます. これで, デフォルトより優先的に使うことができます:

        % tla my-default-archive
        lord@emf.net--2003-example

        % tla categories -A lord@emf.net--2003
        [... lord@emf.net--2003 のカテゴリ ...]


使用上の注意: -A の引数はデフォルトアーカイブよりも優先しますが, 完全修飾プロジェクト名 (fully qualified project names) による指定の方が優先します (以下参照).

完全修飾プロジェクト名 (Fully Qualified Project Names)

プロジェクト名を受けとるコマンドでは, 完全修飾プロジェクト名 (fully qualified project names) を使うことができます. 完全修飾名 (fully qualified name) の構成は, アーカイブ名を前に置き, スラッシュ (/) を続け, プロジェクト名が続きます:

   カテゴリ名 (category name):
   tla                     => lord@emf.net--2003/tla

   ブランチ名 (branch name):
   tla--devo               => lord@emf.net--2003/arch--tla

   バージョン名 (version name):
   tla--devo--1.0          => lord@emf.net--2003/tla--devo--1.0

   リビジョン名 (revision name):
   tla--devo--1.0--patch-1 => lord@emf.net--2003/tla--devo--1.0--patch-1


次の例のような具合です:

        % tla my-default-archive
        lord@emf.net--2003-example

        % tla branches lord@emf.net--2003/hello-world
        [... lord@emf.net--2003 の hello-world 中のブランチ ...]


使用上の注意: 完全限修飾名は -A の引数およびデフォルトアーカイブの両方より優先します。

読み出し専用アーカイブ

オペレーティングシステムとサーバのアクセス制御を使って, 一部のまたは全てのユーザを読み出し専用でアクセスするようにできます. 例えば, FTPは匿名のユーザによるアーカイブの読み出しを許しますが, 修正を許さないように, 通常は設定されます.

ローカルミラー, リモートミラーおよびリモートアーカイブを作成する

ミラー は, その内容が別のアーカイブから複製されたアーカイブです。 通常の方法でミラーにコミットすることはできません. ソースのコピーの更新のみができます.

ミラーアーカイブには2つの主要な用途があります: 一つはリモートミラーのローカルコピーを作ることです (ネットワークを介せずにその内容にアクセスできるようになります); もう一方はローカルアーカイブのリモートコピーを作ることです (他の人がそのコピーにアクセスできるようになります)。

リモートアーカイブをローカルにミラーする

リモートアーカイブにできるだけ速くアクセスしたい, もしくは, ネットワークに接続してないときでも使いたいとしましょう. このために, リモートアーカイブをローカルにミラーします.

例題は lord@emf.net--2003b です ($remote_location は http://my.site.com//archives/lord@emf.net--2003b のようなものだとします). 三つの段階があります.

まず, リモートアーカイブを, その名前に -SOURCE を 後置した仮称 (pseudonum) で登録します:

        % tla register-archive lord@emf.net--2003b-SOURCE $remote_location

次に, ローカルミラーを作成します:

        % tla make-archive --mirror-from lord@emf.net--2003b-SOURCE $local_location

このコマンドは, 副作用として, lord@emf.net--2003bを ローカルミラー名として登録します.

最後に, リモート・アーカイブからデータをコピーします:

        % tla archive-mirror lord@emf.net--2003b

リモートのアーカイブが追加された場合は常に, tla archive-mirror の段階を繰り返して追加的にミラーを更新できます。

アーカイブ全体をミラーしたくなければ, 特定のカテゴリ, ブランチあるいはバージョンのみを制限してミラーするようにできます。 詳しくは tla archive-mirror -H で参照してください。

ローカル・アーカイブをリモートにミラーする

ローカルアーカイブ mine@somewhere.com を持っていて, そのアーカイブミラーをインターネットで "公開" して, 他の人が読めるようにしたいとします.

すでに mine@somewhere.com を登録してるなら, リモートミラーが作成できます:

        % tla make-archive --mirror mine@somewhere.com $remote_location

arch は $remote_location に直接書き込みます. そのため, sftp のような書き込み可能なものである必要があります. 標準的な http は使えません.

リモートミラーの内容の初期化や, 追加的な更新は以下のようにできます:

        % tla archive-mirror mine@somewhere.com

ウェブサイトの一部として静的なファイルをインストールできても, そこに WebDAV でアクセスはできない. ということがよくあります. このような状況でも arch のアーカイブを公開できますが, 二つ細いことがあります.

まず, make-archive を実行するときに, 特別なフラグを加えることが必要です:

        % tla make-archive --listing --mirror mine@somewhere.com \
                        $remote_location

--listing フラグは, ミラーの .listing ファイルを最新版に追従させるようにします. そして, 逆に, 通常の HTTP (WebDAV の無い)経由でアーカイブを読めるようにします.

次に, .listing ファイルが古くなり得ることです (例えば, archive-mirror コマンドをうまいタイミングでkill すれば). もしこれが起きた, もしくは, 起こったんじゃないかというときは, 問題のアーカイブを修復するのに, archive-fixup コマンドを使えます:

        % tla archive-fixup mine@somewhere.com-MIRROR

リモートリポジトリの作成

リモートリポジトリを使うときにミラーするのは良くあることですが, ミラーでは無いリモートリポジトリを作成し, そこに直接コミットすることもできます.

リモートリポジトリは次のコマンドで作れます:

        % tla make-archive $archive_name $remote_location

あるいは .listing ファイル付きのリモートリポジトリを作ることもできます:

        % tla make-archive --listing $archive_name $remote_location

混合アクセスモード

一つのアーカイブは複数のアクセス方式で利用できます. 例えば, FTP でアクセス可能なアーカイブを登録するのに, FTP のディレクトリを 持つ計算機の, ローカルなファイルシステム上を使えます. 一方, 他の利用者には アーカイブを ftp: の URL で登録するように頼むことはできます.

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