1

タームペーパーのサブバージョンの内部データ構造に関する情報を調査しています。私はすでにhttp://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structureを見つけましたが、他の情報を見つけることができません。

新しいリポジトリで、いくつかのテスト行を含む単純なテキストファイルをコミットしました。

DELTA
SVN▒▒   ▒▒▒Dies ist die erste Datei im SVN-Repository. Ebenfalls ist dies die erste Zeile der Ersten Datei.
Dies ist die zweite Zeile der ersten Datei.
//leerzeile
Diese Zeile wird in der nächsten Revision gelöscht werden.
//leerzeile
Dies ist die letzte Zeile der Datei.
ENDREP
id: 0-1.0.r1/293
type: file
count: 0
text: 1 0 280 263 f76e56eefcb558ac6682682c05c16eb8 785a12924cf4a78d97cb10ba9903086bf3683d2d 0-0/_2
cpath: /Erste Datei.txt
copyroot: 0 /

PLAIN
K 15
Erste Datei.txt
V 17
file 0-1.0.r1/293
END
ENDREP
id: 0.0.r1/529
type: dir
pred: 0.0.r0/17
count: 1
text: 1 468 48 48 6d3f404edb0eca280b1f748b565436c9
cpath: /
copyroot: 0 /

_0.0.t0-0 add-file true false /Erste Datei.txt


529 654

最初のブロック (DELTA で始まり、空行で終わるブロック) は構造体ファイルで説明されていますが、その下の部分は説明されていません。

ここに誰か私に説明できる人はいますか?もちろん、「K 15」の後の行はファイル名であり、「V17」の後の行は上記のデルタで説明されているものですが、その情報はどこで使用されていますか?

すでに助けてくれてありがとう

4

1 に答える 1

2

これは、リポジトリのルートのディレクトリ表現です。Subversion のディレクトリは、ファイルの内容がディレクトリのハッシュ ダンプ (リンクしたページで説明されているように) である単なるファイルであると考えてください。

表現がディレクトリ ノードのテキスト コンテンツの場合、展開されたコンテンツはハッシュ ダンプ形式でエントリ名を " " ペアにマッピングします。

最近まで、ディレクトリ表現は常に a PLAIN(つまり全文) として書かれていましたが、1.8.0 の時点で a として記述できるようになりましたDELTA(これにより、リポジトリが非常に深いツリーを持つ場合に必要なストレージ スペースが大幅に削減されました)。

ディレクトリ表現を使用する理由は、個々のファイルのストレージをツリー内のその場所から抽象化したためです。最初に、これは安価なコピーを実装するために使用されました。(copy コマンドを使用して) 分岐すると、Subversion はツリー内のファイルの新しいファイル コンテンツ表現を書き出すのではなく、既存のファイル表現へのポイントの新しいディレクトリ表現を単に書き出します。これは、表現の共有 (データベースを使用して、マージによって個別に追加または作成された同じコンテンツの保存を回避する) でさらに使用されました。

Subversion Design Documentで説明されている、ストレージに使用されるディレクトリのバブルアップ方法についても読みたいと思うかもしれません。このドキュメントは非常に古く、完全に最新ではないことに注意してください。しかし、バブルアップ情報は依然として正確であり、参考情報です。

Subversion & Git Live 2013 での Stefan Fuhrmann の講演を紹介したいと思いますが、まだ Web に投稿されていないと思います。しかし、ファイル システム フォーマットで行われている作業について、興味深いと思われる情報がいくつか含まれています。

さらに質問がある場合は、irc.freenode.net の #svn-dev までお気軽にお問い合わせください。

于 2013-11-11T05:04:58.210 に答える