VCS-Lite-0.02 >
0.04
との差分
VCS::Lite 0.04 と 0.02 の差分
1 | 1 | |
2 | 2 | =encoding euc-jp |
3 | 3 | |
4 | 4 | =head1 名前 |
5 | 5 | |
6 | 6 | VCS::Lite - 最低限のバージョンコントロールシステム |
7 | 7 | |
8 | =head1 この翻訳に関する注意 | |
9 | ||
10 | VCS::Lite version 0.04 のドキュメントには、 | |
11 | 間違いがあるため、この翻訳は、VCS::Liteの作者の要請により、 | |
12 | 訂正したものになっています。 | |
13 | ||
14 | 8 | =head1 概要 |
15 | 9 | |
16 | 10 | use VCS::Lite; |
11 | ||
18 | 12 | # diff |
13 | ||
20 | my $lit = VCS::Lite->new( | |
14 | my $lit = VCS::Lite->new($fh1); | |
21 | my $lit2 = VCS::Lite->new( | |
15 | my $lit2 = VCS::Lite->new($fh2); | |
22 | my $difftxt = $lit->d | |
16 | my $difftxt = $lit->diff($lit2); | |
23 | 17 | print OUTFILE $difftxt; |
18 | ||
25 | 19 | # patch |
20 | ||
27 | my $ | |
21 | my $lit3 = $lit->patch($fh3); | |
28 | | |
22 | $lit3->save('~me/patched_file'); | |
29 | | |
23 | ||
30 | ||
31 | 24 | # merge |
25 | ||
33 | 26 | my $lit4 = $lit->merge($lit2,$lit3); |
34 | | |
27 | $lit4->save('~me/merged_file'); | |
28 | ||
36 | 29 | =head1 説明 |
37 | 30 | |
38 | 31 | このモジュールは、バージョンコントロールシステムと、一般に関連のある機能を提供します。 |
39 | 32 | ですが、バージョンコントロールシステムを必要も、実装もしません。 |
40 | 33 | 用途は、wiki や、ドキュメントマネージメントシステムや設定マネージメントを含みます。 |
41 | 34 | |
42 | 35 | VCS::Lite は、Algorithm::Diffモジュールを使います。 |
43 | 36 | Algorithm::Diffは、基本的な、diffing、pathing、merging の機能を提供します。 |
44 | 37 | |
45 | 38 | =head2 new |
46 | 39 | |
40 | The underlying object of VCS::Lite is an array. The members of the | |
41 | array can be anything that a scalar can represent (including references | |
42 | to structures and objects). The default is for the object to hold | |
43 | an array of scalars as strings corresponding to lines of text. If | |
44 | you want other underlying types, it is normal to subclass VCS::Lite | |
45 | for reasons which will become apparent, | |
46 | ||
47 | 47 | VCS::Lite の基礎をなすオブジェクトは配列です。 |
48 | 48 | 配列のメンバはスカラーが表現できるものなら何でもあり得ます(構造やオブジェクトへのリファレンスを含みます)。 |
49 | 49 | デフォルトでは、オブジェクトは、テキストの行に一致する文字列としてのスカラーの配列です。 |
50 | 50 | もし、他の基礎をなす型がいいなら、VCS::Lite のサブクラスにするのが普通です。 |
51 | 51 | そうすれば、一目瞭然になるからです。 |
52 | 52 | |
53 | ||
53 | B<new> が取り得るパラメタの形式のリストです。 | |
54 | 54 | |
55 | my $lite = VCS::Lite->new( | |
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 | |
56 | 59 | |
57 | これは、ファイルを飲みこんで、オブジェクトを作成します。 | |
58 | 完全な形は以下のようになります: | |
59 | ||
60 | my $lite = VCS::Lite->new( $object_id, $separator, $source, ...); | |
61 | ||
62 | ここの $object_id は、文字列で、アプリケーションの環境で、 | |
63 | diffされたり、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 | ||
79 | 60 | DWIM の Perl魂では、new は配列リファレンスを想定します。 |
80 | 61 | あなたが、何でもリストを作る仕事を終えているなら(訳註:you have already done all the work of making your list of whatevers.)。 |
81 | 62 | 文字列(ファイル名)か、ファイルハンドルであれば、 |
82 | ファイルは | |
63 | ファイルは音を立てて食べられ、テキストの行ごとに読んで、配列のメンバに入ります。 | |
83 | 64 | コールバックであれば、ルーチンは、引き続いた、引数 $p1、 $p2 ...と一緒に、呼ばれます。 |
84 | 65 | そして、ルーチンは配列に加えられた(push された)スカラーを返すことが期待されます。 |
85 | $sep は、オプショナルな入力レコードセパレータ正規表現です。 | |
66 | $sep は、オプショナルな入力レコードセパレータ正規表現です。デフォルトでは、$/ を使います。 | |
86 | 67 | |
87 | 68 | =head2 text |
88 | 69 | |
89 | 70 | my $foo = $lite->text; |
90 | 71 | my $bar = $lit2->text('|'); |
91 | 72 | my @baz = $lit3->text; |
92 | 73 | |
93 | スカラーコンテキストでは、 | |
74 | スカラーコンテキストでは、食べられたファイル内容と等しいものを返します。 | |
94 | (オプショナルなセパレータパラメータは、 | |
75 | (オプショナルなセパレータパラメータは、文字列を一緒に繋げるのに使われます)。 | |
95 | 76 | リストコンテキストでは、行か、レコードのリストを返します。 |
96 | 77 | |
97 | =head2 | |
78 | =head2 save | |
98 | 79 | |
99 | | |
80 | $lit3->save('~me/patched_file'); | |
100 | 81 | |
82 | save は、new の逆戻し操作です。ファイルネームかファイルハンドルを与えます。 | |
83 | ファイルは、連続するメンバのために、オブジェクトのシリアライズメソッドの呼出を全部書き出します。 | |
84 | もし、サブクラスであれば、自分自身のシリアライザーを供給できます。 | |
85 | ||
86 | (訳註:未実装のようです)。 | |
87 | ||
88 | =head2 diff | |
89 | ||
90 | my $difftxt = $lit->diff($lit2); | |
91 | ||
101 | 92 | 2つの、VCS::Lite オブジェクトの間の違いを取ります。 |
102 | このオブジェクトは、L<VCS::Lite::Delta>オブジェクトを返します。 | |
103 | 93 | |
94 | 出力されるのは、普通の diff の形式です。たとえば: | |
95 | ||
96 | 827c828 | |
97 | < my ($id, $name) = @_; | |
98 | --- | |
99 | > my ($id, $name, $prefix) = @_; | |
100 | ||
104 | 101 | =head2 patch |
105 | 102 | |
106 | my $lit3 = $lit->patch($ | |
103 | my $lit3 = $lit->patch($fh3); | |
107 | 104 | |
108 | 105 | VCS::Lite オブジェクトへパッチを適用します。 |
109 | 106 | ファイルハンドルか、ファイル名の文字列を受け取ります。 |
110 | 107 | diff フォーマットでファイルを読み、それを適用します。 |
111 | 108 | パッチのあたったソースとして VCS::Lite オブジェクトを返します。 |
112 | 109 | |
113 | 110 | =head2 merge |
114 | 111 | |
115 | my $lit4 = $lit->merge($lit2,$lit3); | |
112 | my $lit4 = $lit->merge($lit2,$lit3,\&confl); | |
116 | 113 | |
117 | 114 | "平行四辺形のマージ"を行います。3つの VCS::Lite オブジェクト - |
118 | 115 | 基礎のオブジェクトと2つの変更ストリーム - を取ります。 |
119 | 116 | 変更の組の両方でマージされた、VCS::Lite オブジェクトが返ります。 |
120 | 117 | |
121 | ||
118 | メソッドへ渡す3番目のパラメタは、マージのコンフリクトが起こったときに | |
119 | いつでも呼ばれるサブルーチンです。このサブルーチンは、コンフリクトを解決するか、 | |
120 | 必要なテキストを挿入して、コンフリクトをハイライトする必要があります。 | |
122 | 121 | |
123 | ||
122 | =head1 著者 | |
124 | 123 | |
125 | ||
124 | (原文まま) | |
126 | 125 | |
127 | ||
126 | I. P. Williams, E<lt>Ivor dot williams (at) tiscali dot co dot United KingdomE<gt> | |
128 | as Perl itself. | |
129 | 127 | |
130 | 128 | =head1 SEE ALSO |
131 | 129 | |
132 | 130 | L<Algorithm::Diff>. |