CTM(5)

名称
ctm - source code mirror system

解説
ctm は CTM デルタと呼ばれる特別のファイルフォーマットでデータを送ります。

CTM デルタは制御行とデータ塊を含みます。 各制御行は “CTM” という文字で始まり、CTM 文と制御データが続いて、文字 '\n' で終ります。

データ塊は常に先行する制御行に属して、その制御行の 最後のフィールドにはデータ塊のバイト数が入っています。 後に続く改行文字 '\n' が各データ塊に続き、この 改行は塊には含まれずバイト数にも数えられません。

CTM 文は以下の形式をとります。

_BEGIN version name number timestamp prefix
    これが CTM デルタファイル全体の始まりです。 version フィールドはプログラムのバージョンと一致しなければなりません (現在は 2.0)。 name は名前で number は CTM サービスの通し番号です。通し番号はファイル .ctm_status と照合され、そのデルタがすでに適用されていないかの確認に使われます。 timestamp はデルタ生成日時の年、月、日、時、分、秒を参考のために含みます (文字 ‘Z’ が続いて UTC のタイムスタンプであることを示します)。 prefix フィールドは現在実装されていません。

_END md5
    この文で CTM デルタは終了します。 md5 は全体のチェックサムで デルタ全体の MD5 チェックサムと照合されます。 デルタ全体とは ``_END'' に続く空白 (0x20) 文字までのことです。

FM name uid gid mode md5 count
    ファイル name を作成します。元のファイルは uid として uid (数値、10進) を、 gid として gid (数値、10進) を、モードとして mode (数値、8進) を、そして MD5 チェックサムとして md5 を持ちます。

    続く count バイトのデータが新しいファイルの内容です。

FS name uid gid mode md5before md5after count
    ファイル name の内容を置き換えます。 元のファイルは新しい uid として uid (数値、10進) を、新しい gid として gid (数値、10進) を、新しいモードとして mode (数値、8進) を、古い MD5 チェックサムとして md5before を、そして新しい MD5 チェックサムとして md5after を持ちます。

    続く count バイトのデータが新しいファイルの内容です。

    ファイルを編集するためのコマンドがファイルサイズを超えてしまい 置き換えの方が効率的な場合に、ファイルの置き換えが使われます。

FN name uid gid mode md5before md5after count
    ファイル name を編集します。引数は上にある通りですが、データ部分には diff(1) の -n スクリプトを含み該当ファイルに適用されます。

FR name md5
    ファイル name を削除します。 対象ファイルの MD5 チェックサムが md5 と一致しなければなりません。

AS name uid gid mode
    元のファイル name の所有者を uid に、グループを gid に、そして/またはモードを mode に変更します。

DM name uid gid mode
    ディレクトリ name が作成されます。元々、ディレクトリの所有者は uid 、グループは gid 、そしてモードは mode でした。

DR name
    ディレクトリ name を削除します。

使用例
以下の使用例では、長い行は表示できるように改行してあります (バックスラッシュを付けてあります)。

    CTM_BEGIN 2.0 cvs-cur 485 19950324214652Z .
    CTMFR src/sys/gnu/i386/isa/scd.c,v 5225f13aa3c7e458f9dd0d4bb637b18d
    CTMFR src/sys/gnu/i386/isa/scdreg.h,v e5af42b8a06f2c8030b93a7d71afb223
    CTMDM src/sys/gnu/i386/isa/Attic 0 552 775
    CTMFS .ctm_status 545 552 664 d9ccd2a84a9dbb8db56ba85663adebf0 \
    e2a10c6f66428981782a0a18a789ee2e 12
    cvs-cur 485

    CTMFN CVSROOT/commitlogs/gnu 545 552 664 \
    5d7bc3549140d860bd9641b5782c002d 7fb04ed84b48160c9b8eea84b4c0b6e3 394
    a6936 21
    ache        95/03/24 09:59:50

      Modified:    gnu/lib/libdialog kernel.c prgbox.c
      Log:
    [...]
    CTM_END 74ddd298d76215ae45a077a4b6a74e9c

関連項目
ctm(1), ctm_rmail(1), ed(1)

歴史
最初の試用は FreeBSD 1.1.5 で行われて、多くのバグと手法が出されました。 CTM システムは FreeBSD 2.1 で公開されました。

作者
CTM システムは Poul-Henning Kamp <phk@FreeBSD.org> によって設計、実装が行われました。

このマニュアルページは Joerg Wunsch <joerg@FreeBSD.org> が書きました。