2011-07-19 10 views
3

ここでは、かなり大きなSubversionリポジトリがあります。内部モニタリングの一環として、すべてのリポジトリ内のすべてのリビジョンのすべてのファイルとディレクトリが必要です。問題は、そのうちの1つには約29000のリビジョンがあり、約300,000のディレクトリが含まれており、約4百万のファイルが含まれています。以前の方法では、単にsvnlookコマンドの出力をperlスクリプトで使用してすべてを数えました。私は出力を使用してみました 'svnlook変更'カウントを構築するために、それは主に動作しますが、いくつかかなり迷惑な推測が関与しています。補足として、リポジトリはxen vmでホストされているため、I/Oパフォーマンスは少し問題です。誰もがこれを行うためのより良い方法がありますか?非常に大規模なSubversionリポジトリのファイルとディレクトリのカウント

答えて

0

ダンプデルタ形式のsvnadminを調べてみます。私は少し試してみましたが、基本的にすべてのファイルとすべてのリビジョンを含む1つの巨大なパッチタイプのファイルです。これは、Perlのようなもので処理するために、自然の中でのテキストなので、比較的簡単だし、それは時に各リビジョン1の全体を経由に比べてかなり小さいです。

あなたはおそらく、すべてのファイル(多分これのためのSQLiteを使用し、400万人の場合)の表現を持っていて、各リビジョンを通過するときに、それらを更新する必要があると思います。デルタは順番にリビジョンを実行するので、それは比較的簡単です。 (たぶん私は楽観的であることしています。)

-1

どのようなものについて:

find /svndir | wc -l 

LinuxやUnix上で見つけるからの出力は、ファイルまたはディレクトリごとに1行を生成し、それが再帰的です。出力を "wc -l"にパイプして行を数えます。あなたは、サーバー側のレポについて話していると仮定すると、

+0

これはレポ内の各「ファイル」のファイルを持っていないサーバー側のレポ内のファイルを、数えることになるOPコンテキストに基づいています。上記のコマンドは、レポのメタを追跡デシベル、confに、DAV、およびその他のファイルをカウントします。 – Eddie

1

svn list -R --xml file:///svnrepos/myrepo | grep kind=\"file\" | wc -l

その非常に速いが、それは正確ではありません。

関連する問題