web-dev-qa-db-ja.com

.svnフォルダーのサイズを縮小する

このプロジェクトでは、ビルド済みのバイナリを使用してビルド時間を短縮することを決定しました。毎週/毎月、安定したリリースを作成し、リポジトリにコミットします。ビルドでは、ソースからすべてをビルドする代わりに、これらのバイナリを使用します。

ビルド速度については、これは素晴らしいです。しかし、当然のことながら、SVNチェックアウトのサイズは本当に大きくなります。現在、トランクのサイズは最大22GBです。これはSubversionの使用目的ではないことを理解しています。しかし、現時点では代替手段はありません。

しかし、私は現在の状況を改善したいと思います。 .svnフォルダーは、ディスク上のトランクのサイズに大きく貢献します。バイナリが更新されると、.svnフォルダーにいくつかのベースが保持されるようです。つまり、バイナリが4GBの場合、.svnにコピーがあります。更新された場合、.svnフォルダーは元のベースと新しいベースを保持し、その1つのファイルに対して最大8GBを一括します。

特定のファイルのベースを.svnフォルダーに保持しないようにSubversionに指示することはできますか?グーグルを通して、私は同様の質問を見つけました、。svnフォルダサイズを減らす方法?

サイモンが受け取った答えは

  • 部分的なチェックアウトを使用します(バイナリが必要なため、これは機能しません)
  • これはまだSubversionの機能ではありません
  • 議論されましたが、少なくともSubversion 1.8までは機能になりません

幸いなことに、Subversion 1.8がリリースされました。この機能は追加されましたか?

リリースノート で気がつきませんでした。 「ディレクトリとプロパティのストレージ削減」は有望に見えますが。

61
Shane Gannon

この時点で原始的なものを保存する必要性を取り除く方法はありません。話題になっていますが、実際には簡単に解決できる問題ではありません。それらをオプションで削除すると、さまざまなユースケースの状況が発生するためです。

1.7では元のストレージが変更されました そして場合によっては実際には1.7以前よりも状況が悪化することがあります。現在、Pristineは、Pristineのハッシュによって名前が付けられたファイルに保管されます。したがって、同一のファイルが複数ある場合は、保存されている初期状態を複製することはできません。ただし、初期状態をクリーンアップしません。だから彼らはただ積み上げ続けているだけです。 svn cleanupを使用して、未使用の初期値を削除するようトリガーできます。

未使用の初期状態を保持することにはポイントがあります。ブランチ間を切り替える場合、1.8で既に初期状態にあるものをダウンロードする必要はありません。

64
Ben Reser

svn cleanupコマンドではなくTortoiseSVNクライアントのCleanupコマンドを使用している場合、.svnフォルダーのサイズは、Vacuumの初期コピーオプションがチェックされます:

enter image description here

また、 here のように、作業コピーの最上位でクリーンアップすることをお勧めします。

[編集]

この回答 および SVN変更ログ によると、svn cleanupには、初期コピー(/vacuum)をバキュームするオプションがあります。これは、1.8からデフォルトで実行されます。バージョン1.10以降では、デフォルトでは実行されなくなりましたが、コマンドsvn cleanup --vacuum-pristinesを使用して実行できます( this answer を参照)。

29
Alexei