=encoding euc-jp =head1 名前 VCS::Lite - 最低限のバージョンコントロールシステム =head1 この翻訳に関する注意 VCS::Lite version 0.04 のドキュメントには、 間違いがあるため、この翻訳は、VCS::Liteの作者の要請により、 訂正したものになっています。 =head1 概要 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; =head1 説明 このモジュールは、バージョンコントロールシステムと、一般に関連のある機能を提供します。 ですが、バージョンコントロールシステムを必要も、実装もしません。 用途は、wiki や、ドキュメントマネージメントシステムや設定マネージメントを含みます。 VCS::Lite は、Algorithm::Diffモジュールを使います。 Algorithm::Diffは、基本的な、diffing、pathing、merging の機能を提供します。 =head2 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 は、オプショナルな入力レコードセパレータ正規表現です。 =head2 text my $foo = $lite->text; my $bar = $lit2->text('|'); my @baz = $lit3->text; スカラーコンテキストでは、飲み込まれたファイル内容と等しいものを返します。 (オプショナルなセパレータパラメータは、 defaulting to $_、文字列を一緒に繋げるのに使われます)。 リストコンテキストでは、行か、レコードのリストを返します。 =head2 delta my $delt = $lit->delta($lit2); 2つの、VCS::Lite オブジェクトの間の違いを取ります。 このオブジェクトは、Lオブジェクトを返します。 =head2 patch my $lit3 = $lit->patch($delt); VCS::Lite オブジェクトへパッチを適用します。 ファイルハンドルか、ファイル名の文字列を受け取ります。 diff フォーマットでファイルを読み、それを適用します。 パッチのあたったソースとして VCS::Lite オブジェクトを返します。 =head2 merge my $lit4 = $lit->merge($lit2,$lit3); "平行四辺形のマージ"を行います。3つの VCS::Lite オブジェクト - 基礎のオブジェクトと2つの変更ストリーム - を取ります。 変更の組の両方でマージされた、VCS::Lite オブジェクトが返ります。 =head1 著作件 Copyright (c) Ivor Williams, 2002-2003 =head1 ライセンス You may use, modify and distribute this module under the same terms as Perl itself. =head1 SEE ALSO L.