Arch

arch（アーク）は、分散型バージョン管理システムである。ただし、archと書いた場合には、特定のコマンドを指すものではなく、archのプロトコルに沿ったリポジトリ（アーカイブ）操作を行えるツールの総称として扱われている。設計および主な実装はTom Lordが行った。
archの種類.
現在使われている主なarchの実装としては、
などがある。
archの動作.
archはCVSやSubversionと同様にバージョンを管理する場所（リポジトリ）を持ち、それをアーカイブと呼ぶが、CVSやSubversionと異なり、集中させる必要がない。必要であれば、他人のアーカイブを分岐させたローカルのアーカイブを作成し、開発に利用することができる。後になって、分岐したアーカイブでの成果を取り込む（マージ）必要があれば、それを行うための補助機能が用意されている。
archでの主な操作.
GNU arch（tlaコマンド）での操作例を以下にあげる。
アーカイブの作成.
 $ tla make-archive foo@bar.net--2004 /home/foo/{archives}/2004
これにより、アーカイブfoo@bar.net--2004が作成され、データの実体が/home/foo/{archives}/2004に配置される。例はローカルファイルであるが、それ以外にWebDAVやSSH (SFTP)、FTP越しに置くことも可能となっている。
アーカイブに置かれたデータの参照.
 $ tla categories -A foo@bar.net--2004
 $ tla branches -A foo@bar.net--2004 libA
 $ tla versions -A foo@bar.net--2004 libA--main
 $ tla revisions -A foo@bar.net--2004 libA--main--X.Y.Z
データにはカテゴリ名、ブランチ名、バージョン名、リビジョン名の4つが通常要求されるため、それぞれを確認するためのコマンドが用意されている。
アーカイブからデータを取得する.
libA--mainブランチの最新版を取得
 $ tla get -A foo@bar.net--2004 libA--main
libA--main--X.Y.Zの最新リビジョンを取得
 $ tla get -A foo@bar.net--2004 libA--main--X.Y.Z
libA--main--X.Y.Z--patch-nリビジョンを取得
 $ tla get -A foo@bar.net--2004 libA--main--X.Y.Z--patch-n
編集したアーカイブを登録する.
ログを作成
 $ tla make-log
登録
 $ tla commit
ローカルコピーを最新版に更新する.
ローカルの修正を考慮して試みる
 $ tla update
ローカルの修正を無視して更新
 $ tla replay
変更記録 (ChangeLog) を作成.
 $ tla changelog