The Hackerlab at regexps.com

arch のチェンジセットフォーマット

up: arch Meets hello-world
next: インベントリ命名規約のカスタマイズ
prev: アーカイブ内のリビジョンのキャシングによる arch の速度向上

arch のチェンジセットは多くのファイルとサブディレクトリを含むディレクトリです。 これらを以下で説明します.

ファイル:

        orig-dirs-index
        mod-dirs-index
        orig-files-index
        mod-files-index

フォーマット:

        <file path><tab><id>

ソート:

        sort -k 2

これらは、すべてのファイルとディレクトリの追加、削除、もしくは, 二つのツリーの間の変更の索引を含みます.

ファイル:

        original-only-dir-metadata
        modified-only-dir-metadata

フォーマット:

        <metadata><tab><name>

ソート:

        sort -t '<tab>' -k 2

<metadata> 欄は, --permissions オプションを与えられた file-metadata プログラムからの文字出力を含みます. 以下に例示します:

        --permissions 777

その出力は set-file-metadata プログラムへのオプションとオプションの引数として使うのにも適してます. 将来の archリリースでは (permissions だけでなく他にも)追加のフラグを加えるかもしれません.

そのリストが記すことは、 二つのツリーのうち片方だけに存在する全てのディレクトリの ファイルのパーミッションです.

ディレクトリ:

        removed-files-archive
        new-files-archive

これらのディレクトリは各々、 オリジナルの (removed-files-archive), あるいは修正済のツリー (new-files-archive) だけに生じる、 すべてのファイルの完全なコピーを含みます. 保存されたファイルはそれぞれ、ソースツリーにあったのと同じ相対位置に, 同じパーミッション (少なくとも) のまま, 保管されます.

ディレクトリ:

        patches

このディレクトリが含むものは, そのディレクトリの構造が変更後のツリーの ディレクトリの構造の部分集合であるツリーです. これは, 両方のツリーに共通なディレクトリとファイルの変更データを含みます.

変更後のツリーのパス new_name に格納されたファイルに対して, patches ディレクトリは次のものを含むかもしれません:


        new_name.link-orig

                変更前のファイルはシンボリックリンクです.
                `new_name.link-orig' はリンク先を含み
	        最後に改行があるテキストファイルです.

                リンク先が変化するか, リンクが通常ファイルに置き換わったとき
                だけこのファイルは存在します.


        new_name.link-mod

                変更後のファイルはシンボリックリンクであり, このファイルは
                リンク先と最後の改行を含むテキストファイルです.

                リンク先が変化したか, 通常ファイルがリンクに置き換わったとき
                だけこのファイルは存在します.


        new_name.original

                これは変更前のツリーからのファイルの完全なコピーで, 
                (少なくとも)パーミッションを保持してます.

                ファイルがシンボリックリンクに置換されたとき, もしくは,
                ファイルの内容が `diff(1)' で扱えないとき
                だけこのファイルは存在します.


        new_name.modified

                これは変更後のツリーからのファイルの完全なコピーで, 
                (少なくとも)パーミッションを保持してます.

                シンボリックリンクがファイルに置換されたとき, もしくは,
                ファイルの内容が `diff(1)' で扱えないとき
                だけこのファイルは存在します.

        new_name.patch

                修正前と修正後のファイルの間の標準的な context diff です.
                diff の良く使われてる実装 (`GNU diff') は, 非標準な 
                context diffs を出力します: これは変更前と変更後が同一の
                コンテクストの行のコピーを省きます. このため今のところ
                `.patch' は同じバグを持つことでしょう. 幸運なことに,
                `patch' の良く使われてる実装 (``GNU patch'') は
                そのような入力を受けとる耐性があります.

                

        new_name.meta-orig
        new_name.meta-mod

                二つのバージョンのファイルの間で変化があったメタデータ
                (現在はパーミッションのみ). これらのファイルは
                `file-metadata' プログラムに `--symlink --permissions' 
                フラグを付けたものの出力を含みます. 同様の出力を
                比較するのに適していて, `set-file-metadata' への
                オプションと引数の使用に適しています.

                通常のファイルがシンボリックリンクに置換されるか, その逆の
                場合にのみ, これらのファイルは含まれます.

                
        new_name/=dir-meta-orig
        new_name/=dir-meta-mod

                これらのファイルを含むディレクトリの二つのバージョンの間の
                変更があったディレクトリのメタデータ (現在はパーミッション
                のみ). これらのファイルは `file-metadata' プログラムに
                `--symlink --permissions' フラグを付けたものの出力を含みます.
                 同様の出力を比較するのに適していて, `set-file-metadata' への
                オプションと引数の使用に適しています.


注意: 通常のファイル(あるいはシンボリックリンク)が ディレクトリに置き換わったら, もしくは, 逆の場合, このことは, ファイル(またはリンク)を一方のツリーに消去(または追加)され, かつ, 他方のツリーに追加(または消去)されたと記録されます.

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