VCS-Lite-0.02 > 0.04 との差分

VCS::Lite 0.04 と 0.02 の差分

11
22=encoding euc-jp
33
44=head1 名前
55
66VCS::Lite - 最低限のバージョンコントロールシステム
77
8=head1 この翻訳に関する注意
9
10VCS::Lite version 0.04 のドキュメントには、
11間違いがあるため、この翻訳は、VCS::Liteの作者の要請により、
12訂正したものになっています。
13
148=head1 概要
159
1610 use VCS::Lite;
11
1812 # diff
13
20 my $lit = VCS::Lite->new('/home/me/foo1.txt');
14 my $lit = VCS::Lite->new($fh1);
21 my $lit2 = VCS::Lite->new('/home/me/foo2.txt');
15 my $lit2 = VCS::Lite->new($fh2);
22 my $difftxt = $lit->delta($lit2)->diff;
16 my $difftxt = $lit->diff($lit2);
2317 print OUTFILE $difftxt;
18
2519 # patch
20
27 my $delt = VCS::Lite::Delta->new('/home/me/patch.diff');
21 my $lit3 = $lit->patch($fh3);
28 my $lit3 = $lit->patch($delt);
22 $lit3->save('~me/patched_file');
29 print OUTFILE $lit3->text;
23
30
3124 # merge
25
3326 my $lit4 = $lit->merge($lit2,$lit3);
34 print OUTFILE $lit4->text;
27 $lit4->save('~me/merged_file');
28
3629=head1 説明
3730
3831このモジュールは、バージョンコントロールシステムと、一般に関連のある機能を提供します。
3932ですが、バージョンコントロールシステムを必要も、実装もしません。
4033用途は、wiki や、ドキュメントマネージメントシステムや設定マネージメントを含みます。
4134
4235VCS::Lite は、Algorithm::Diffモジュールを使います。
4336Algorithm::Diffは、基本的な、diffing、pathing、merging の機能を提供します。
4437
4538=head2 new
4639
40The underlying object of VCS::Lite is an array. The members of the
41array can be anything that a scalar can represent (including references
42to structures and objects). The default is for the object to hold
43an array of scalars as strings corresponding to lines of text. If
44you want other underlying types, it is normal to subclass VCS::Lite
45for reasons which will become apparent,
46
4747VCS::Lite の基礎をなすオブジェクトは配列です。
4848配列のメンバはスカラーが表現できるものなら何でもあり得ます(構造やオブジェクトへのリファレンスを含みます)。
4949デフォルトでは、オブジェクトは、テキストの行に一致する文字列としてのスカラーの配列です。
5050もし、他の基礎をなす型がいいなら、VCS::Lite のサブクラスにするのが普通です。
5151そうすれば、一目瞭然になるからです。
5252
53コンストタの基本的なは以下ようになりま:
53B<new> が取り得るパタの形リストで
5454
55 my $lite = VCS::Lite->new( '/my/file');
55 my $lite = VCS::Lite->new( \@foo); #Array ref
56 my $lite = VCS::Lite->new( '/users/me/prog.pl',$sep); #File name
57 my $lite = VCS::Lite->new( $fh1,$sep); #File handle
58 my $lite = VCS::Lite->new( \&next, $p1, $p2...); #Callback
5659
57これは、ファイルを飲みこんで、オブジェクトを作成します。
58完全な形は以下のようになります:
59
60 my $lite = VCS::Lite->new( $object_id, $separator, $source, ...);
61
62ここの $object_id は、文字列で、アプリケーションの環境で、
63diffされたり、pacheされたり、mergeされたりするものを特定する文字列です。
64
65ここの、$separator は、正規表現で、文字列をトークンに分割するものです。
66デフォルトでは、自然の Perl のメカニズムの $/ です。
67(これは、ファイルから読まないときにエミュレートされます)。
68結果として生じるVCS::Liteオブジェクトは、デフォルトでは、chompされません。
69
70$source が、もし、指定されなければ、$object_id は、ファイルとして開かれ、
71その完全な内容が行ごとに読まれます。別の方法は、$source を提供することです。
72$source は、下記のようなものです:
73
74 スカラ - これは、$separator を使いトークンにされる文字列です
75 配列リファレンス - トークンの配列です
76 ファイルハンドルかグロブリファレンス - ファイルの内容が読み込まれます
77 コールバック - undefを受け取るまで、トークンを得るために連続して呼ばれます
78
7960DWIM の Perl魂では、new は配列リファレンスを想定します。
8061あなたが、何でもリストを作る仕事を終えているなら(訳註:you have already done all the work of making your list of whatevers.)。
8162文字列(ファイル名)か、ファイルハンドルであれば、
82ファイルは飲み込まれ、テキストの行ごとに読んで、配列のメンバに入ります。
63ファイルは音を立てて食べられ、テキストの行ごとに読んで、配列のメンバに入ります。
8364コールバックであれば、ルーチンは、引き続いた、引数 $p1、 $p2 ...と一緒に、呼ばれます。
8465そして、ルーチンは配列に加えられた(push された)スカラーを返すことが期待されます。
85$sep は、オプショナルな入力レコードセパレータ正規表現です。
66$sep は、オプショナルな入力レコードセパレータ正規表現です。デフォルトでは、$/ を使います。
8667
8768=head2 text
8869
8970 my $foo = $lite->text;
9071 my $bar = $lit2->text('|');
9172 my @baz = $lit3->text;
9273
93スカラーコンテキストでは、飲み込まれたファイル内容と等しいものを返します。
74スカラーコンテキストでは、食べられたファイル内容と等しいものを返します。
94(オプショナルなセパレータパラメータは、 defaulting to $_、文字列を一緒に繋げるのに使われます)。
75(オプショナルなセパレータパラメータは、文字列を一緒に繋げるのに使われます)。
9576リストコンテキストでは、行か、レコードのリストを返します。
9677
97=head2 delta
78=head2 save
9879
99 my $delt = $lit->delta($lit2);
80 $lit3->save('~me/patched_file');
10081
82save は、new の逆戻し操作です。ファイルネームかファイルハンドルを与えます。
83ファイルは、連続するメンバのために、オブジェクトのシリアライズメソッドの呼出を全部書き出します。
84もし、サブクラスであれば、自分自身のシリアライザーを供給できます。
85
86(訳註:未実装のようです)。
87
88=head2 diff
89
90 my $difftxt = $lit->diff($lit2);
91
101922つの、VCS::Lite オブジェクトの間の違いを取ります。
102このオブジェクトは、L<VCS::Lite::Delta>オブジェクトを返します。
10393
94出力されるのは、普通の diff の形式です。たとえば:
95
96 827c828
97 < my ($id, $name) = @_;
98 ---
99 > my ($id, $name, $prefix) = @_;
100
104101=head2 patch
105102
106 my $lit3 = $lit->patch($delt);
103 my $lit3 = $lit->patch($fh3);
107104
108105VCS::Lite オブジェクトへパッチを適用します。
109106ファイルハンドルか、ファイル名の文字列を受け取ります。
110107diff フォーマットでファイルを読み、それを適用します。
111108パッチのあたったソースとして VCS::Lite オブジェクトを返します。
112109
113110=head2 merge
114111
115 my $lit4 = $lit->merge($lit2,$lit3);
112 my $lit4 = $lit->merge($lit2,$lit3,\&confl);
116113
117114"平行四辺形のマージ"を行います。3つの VCS::Lite オブジェクト -
118115基礎のオブジェクトと2つの変更ストリーム - を取ります。
119116変更の組の両方でマージされた、VCS::Lite オブジェクトが返ります。
120117
121=head1 著作件
118メソッドへ渡す3番目のパラメタは、マージのコンフリクトが起こったときに
119いつでも呼ばれるサブルーチンです。このサブルーチンは、コンフリクトを解決するか、
120必要なテキストを挿入して、コンフリクトをハイライトする必要があります。
122121
123Copyright (c) Ivor Williams, 2002-2003
122=head1 著者
124123
125=head1 ライセンス
124(原文まま)
126125
127You may use, modify and distribute this module under the same terms
126I. P. Williams, E<lt>Ivor dot williams (at) tiscali dot co dot United KingdomE<gt>
128as Perl itself.
129127
130128=head1 SEE ALSO
131129
132130L<Algorithm::Diff>.