Differences between revisions 2 and 3
Revision 2 as of 2009-01-18 05:46:58
Size: 2694
Editor: Yuki Kodama
Comment: translated question 8.8
Revision 3 as of 2009-01-18 05:49:06
Size: 2738
Editor: Yuki Kodama
Comment:
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
Line 8: Line 7:
Line 10: Line 8:
Line 12: Line 9:
Line 14: Line 10:
Line 35: Line 30:
Mercurial の diff は従来の diff アルゴリズムとは異なる方法で計算されます(もちろん出力は完全に互換です)。アルゴリズムは Python の difflib をベースにして C 言語に最適化されており、データサイズを最小化することよりも人が読みやすい diff を生成することに重点を置いています。このアルゴリズムは内部的なデルタ圧縮(delta compression)にも使用されています。 Mercurial の diff は従来の diff アルゴリズムとは異なる方法で計算されます(もちろん出力は完全に互換です)。アルゴリズムは Python の [http://python.org/doc/2.4.1/lib/module-difflib.html difflib] をベースにして C 言語に最適化されており、データサイズを最小化することよりも人が読みやすい diff を生成することに重点を置いています。このアルゴリズムは内部的なデルタ圧縮(delta compression)にも使用されています。

Mercurialの限界は?

Mercurialは現在ファイルやインデックスやマニフェストは効率のためメモリ内で処理します。 revlogでのオフセットは32bitで処理するため、revlog内での一つのファイルは4GBより小さくなくてはなりません。 その他、ファイル名の長さやファイルの大きさ、ファイルの内容、ファイル数、リビジョン数には制限はありません。 ネットワークプロトコルはビッグエンディアンであると規定されています。 ファイル名にはヌルキャラクタを含んではいけません。コミッタのアドレスは改行を含むことはできません。 Mercurialは主にUNIX上で開発されているため、他への移植版にUnix的要素が表れることがあります。

Mercurialはデータをどのように格納するの?

この項はまだ翻訳されていません。

バイナリファイルの取り扱いはどうなっているの?

BinaryFiles を見ましょう。

Windows式改行とUnix式の改行の違いはどう?

EncodeDecodeFilter を見ましょう。

$Id$ のようなキーワード置換をしたい

EncodeDecodeFilter を見ましょう。

Mercurialはどのようにして差分を計算している?

Mercurial の diff は従来の diff アルゴリズムとは異なる方法で計算されます(もちろん出力は完全に互換です)。アルゴリズムは Python の [http://python.org/doc/2.4.1/lib/module-difflib.html difflib] をベースにして C 言語に最適化されており、データサイズを最小化することよりも人が読みやすい diff を生成することに重点を置いています。このアルゴリズムは内部的なデルタ圧縮(delta compression)にも使用されています。

デルタ圧縮アルゴリズムについて詳しく調べた経緯は、ベンチマークによるとこの実装が他よりシンプルかつ高速で、従来の diff アルゴリズムの理論値より小さな差分を生成ことがわかったからです。 これは従来のアルゴリズムが挿入・削除・不変な要素に対して同じコストがかかると仮定しているためです。

manifestやチェンジセットをどのように格納している?

ハッシュ値はどのように計算している?

リポジトリの完全性をどのように調べている?

Mercurialにおける署名はどうなっている?

ハッシュ値は衝突しない? SHA1の脆弱性はどうなの?

JapaneseFAQ/TechnicalDetails (last edited 2009-09-14 13:07:48 by YuyaNishihara)