同じ質問をusers@subversion.sapache.orgに投稿し、BSmith-Mannschottからこの回答を得ました。これですべてが説明されます。パスには、コミットごとに16000個のフォルダーを含むディレクトリがあります。詳細な回答をありがとうBスミス-マンショット。他の人の利益のためにここに返信を投稿してください。
リポジトリには、非常に多くのエントリを含むディレクトリが含まれていますか?そのようなディレクトリ内またはその下で行われる大規模なコミットを生成する変更はありますか?
リポジトリへの単一のファイルへの単一の変更をコミットすると仮定しましょう。さらに、ファイルがリポジトリ内のここにあると仮定しましょう。
/project/trunk/some-really-large-directory/notes/blah.txt
blah.txtへの変更をコミットすると、新しいリビジョンは、「blah.txt」とリポジトリのルートの間のディレクトリノードを書き換えます:/ project / trunk / some-really-large-directory / notes、/ project / trunk / some-really-large-directory、/ project / trunk、/ project、/。ディレクトリノードを書き換える場合、FSFSは常に新しいバージョン全体を保存します。(これは、ファイルへの変更が保存される方法とは異なります。これは、通常、同じファイルの以前のバージョンとの違いです。)
/ project / trunk / some-really-large-directory /に10000個のファイルが含まれている場合、blah.txtにコミットするたびに、このディレクトリの完全なコピー(10,000個の名前)がリポジトリに保存されます。
数年前に個人用ウィキをバージョン管理下に置き始めたとき、これに気づきました。これは、10,000を超えるテキストファイルのフラットディレクトリでした。コミットがかなり大きいことにすぐに気づきました。(それ以来、このタスクやその他の理由でgitに切り替えました。)
http://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-upも参照して
ください。