VCS-Lite-0.04 > VCS::Lite

名前

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.

SEE ALSO

Algorithm::Diff.