名前¶
VCS::Lite - 最低限のバージョンコントロールシステム
この翻訳に関する注意¶
VCS::Lite version 0.04 のドキュメントには、 間違いがあるため、この翻訳は、VCS::Liteの作者の要請により、 訂正したものになっています。
概要¶
use VCS::Lite;
# diff
my $lit = VCS::Lite->new('/home/me/foo1.txt');
my $lit2 = VCS::Lite->new('/home/me/foo2.txt');
my $difftxt = $lit->delta($lit2)->diff;
print OUTFILE $difftxt;
# patch
my $delt = VCS::Lite::Delta->new('/home/me/patch.diff');
my $lit3 = $lit->patch($delt);
print OUTFILE $lit3->text;
# merge
my $lit4 = $lit->merge($lit2,$lit3);
print OUTFILE $lit4->text;
説明¶
このモジュールは、バージョンコントロールシステムと、一般に関連のある機能を提供します。 ですが、バージョンコントロールシステムを必要も、実装もしません。 用途は、wiki や、ドキュメントマネージメントシステムや設定マネージメントを含みます。
VCS::Lite は、Algorithm::Diffモジュールを使います。 Algorithm::Diffは、基本的な、diffing、pathing、merging の機能を提供します。
new¶
VCS::Lite の基礎をなすオブジェクトは配列です。 配列のメンバはスカラーが表現できるものなら何でもあり得ます(構造やオブジェクトへのリファレンスを含みます)。 デフォルトでは、オブジェクトは、テキストの行に一致する文字列としてのスカラーの配列です。 もし、他の基礎をなす型がいいなら、VCS::Lite のサブクラスにするのが普通です。 そうすれば、一目瞭然になるからです。
コンストラクタの基本的な形は以下のようになります:
my $lite = VCS::Lite->new( '/my/file');
これは、ファイルを飲みこんで、オブジェクトを作成します。 完全な形は以下のようになります:
my $lite = VCS::Lite->new( $object_id, $separator, $source, ...);
ここの $object_id は、文字列で、アプリケーションの環境で、 diffされたり、pacheされたり、mergeされたりするものを特定する文字列です。
ここの、$separator は、正規表現で、文字列をトークンに分割するものです。 デフォルトでは、自然の Perl のメカニズムの $/ です。 (これは、ファイルから読まないときにエミュレートされます)。 結果として生じるVCS::Liteオブジェクトは、デフォルトでは、chompされません。
$source が、もし、指定されなければ、$object_id は、ファイルとして開かれ、 その完全な内容が行ごとに読まれます。別の方法は、$source を提供することです。 $source は、下記のようなものです:
スカラ - これは、$separator を使いトークンにされる文字列です
配列リファレンス - トークンの配列です
ファイルハンドルかグロブリファレンス - ファイルの内容が読み込まれます
コールバック - undefを受け取るまで、トークンを得るために連続して呼ばれます
DWIM の Perl魂では、new は配列リファレンスを想定します。 あなたが、何でもリストを作る仕事を終えているなら(訳註:you have already done all the work of making your list of whatevers.)。 文字列(ファイル名)か、ファイルハンドルであれば、 ファイルは飲み込まれ、テキストの行ごとに読んで、配列のメンバに入ります。 コールバックであれば、ルーチンは、引き続いた、引数 $p1、 $p2 ...と一緒に、呼ばれます。 そして、ルーチンは配列に加えられた(push された)スカラーを返すことが期待されます。 $sep は、オプショナルな入力レコードセパレータ正規表現です。
text¶
my $foo = $lite->text;
my $bar = $lit2->text('|');
my @baz = $lit3->text;
スカラーコンテキストでは、飲み込まれたファイル内容と等しいものを返します。 (オプショナルなセパレータパラメータは、 defaulting to $_、文字列を一緒に繋げるのに使われます)。 リストコンテキストでは、行か、レコードのリストを返します。
delta¶
my $delt = $lit->delta($lit2);
2つの、VCS::Lite オブジェクトの間の違いを取ります。 このオブジェクトは、VCS::Lite::Deltaオブジェクトを返します。
patch¶
my $lit3 = $lit->patch($delt);
VCS::Lite オブジェクトへパッチを適用します。 ファイルハンドルか、ファイル名の文字列を受け取ります。 diff フォーマットでファイルを読み、それを適用します。 パッチのあたったソースとして VCS::Lite オブジェクトを返します。
merge¶
my $lit4 = $lit->merge($lit2,$lit3);
"平行四辺形のマージ"を行います。3つの VCS::Lite オブジェクト - 基礎のオブジェクトと2つの変更ストリーム - を取ります。 変更の組の両方でマージされた、VCS::Lite オブジェクトが返ります。
著作件¶
Copyright (c) Ivor Williams, 2002-2003
ライセンス¶
You may use, modify and distribute this module under the same terms as Perl itself.