Subversion FSFS -Revisionsはリポジトリにどのように保存されますか?
-
02-10-2019 - |
質問
SubversionがFSFの改訂をどのように保存するか、および特定の改訂番号に対してビュー/シャップショットがどのように構築されるかを理解したいと思います。
私がグーグルで収集したのは、FSFSが単純なディレクトリ構造であり、次のようなリビジョンごとにサブディレクトリがあるということです。
..svn/rev/0/
..svn/rev/1/
..svn/rev/2/
おそらく、変更(デルタ)のみが各改訂ディレクトリの下に記録されます。これは、リビジョンnのビュー/スナップショットを構築するとき、0からnのすべてのデルタをループする必要があることを意味しますか?
これについてのリソースへのリンクは非常に高く評価されています。
ありがとう
解決
Subversionは、各リビジョンのすべてのデルタを1つの(フラット)改訂ファイルに保存します。リポジトリ内の各ファイル/フォルダー(「ノード」と呼ばれる)の内部IDがあります。
単一のリビジョンファイルは、この特定のコミットのためのすべての圧縮デルタで構成されていますが、デルタは以前の改訂版ではなく、呼ばれるスキームを使用します 「スキップデルタ」 成長するバージョンの履歴のための線形成長時間を回避します。
重要なのは、FSFSが使用することです フォワードデルタ bdb-backendを使用する後方デルタの代わりに。したがって、FSFはコミットでより速くなりますが、チェックアウトでは遅くなり、バークレーDBのパフォーマンス特性は他の方法です。
内部でもっと読むことができます FSFに関するSVNデザインノート.
他のヒント
FSFS構造リファレンスへのリンク(ファイル形式の説明を含む)は次のとおりです。 https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure