を識別する方法については、潜在的に除去す大きなバイナリーを確内のSVNリポジトリとは?

StackOverflow https://stackoverflow.com/questions/2176803

  •  24-09-2019
  •  | 
  •  

質問

私は、SVNリポジトリでは3歳以上であり、6,100犯とが1.5GBます。時の運用負荷を軽減したいサイズのSVNリポジトリに伝える事が出来るってのサイズのフルSVN輸出というフルリポジトリとして思う存のサーバーに移動して、新しいサーバーです。

現在のリポジトリのソースコードのすべてのソフトウェアプロジェクトも含む比較的大きなバイナリファイルの意義など

  • フルインストーラーの3行します。
  • .jpg&.pngファイルを更の輸出PSDsるライブと同じフォルダ).
  • Bin Objフォルダを'svnを無視'は次のコミット).
  • 簡単に、ios、androidとmac用にc#ディレクトリが入っています。

これら多数の大型したコンテンツファイルは、'SVNて削除されていた、さらなる課題の識別の犯である。

私のいずれかの

  • 新規作成しSVNリポジトリのみを含むコードのすべてのソフトウェアプロジェクトで 本当に重要な ことをコピーしたファイルをSVNの歴史から古いリポジトリ
  • 除去の為のバイナリファイルから、既存のリポジトリ

はこれら可能ですか?

役に立ちましたか?

解決

また利用 svnadminダンプ をダンプファイルの現在のリポジトリが svndumpfilter のダンプファイルです。また手動で変更の作成とんぼ.

あるんじゃないでしょうかくなってしまうことが、迅速、簡単に仕事ができます。ってきたことをこのようなものは、ほかの子ども達や先生と共有し、リポジトリあったかポンド約150修正したつ600MB.

作ダンプから現在のリポジトリに必要な変更してみて負荷の変更作成したリポジトリストレージエンジンはインデックした新しいリポジトリへのエクスペディアが簡単、便われていたの意味での歴史はまだ正しく作成の変化経路,...).

他のヒント

Othersideなど、右svnadmin dumpについてです。このような何かがあなたのレポに大量のデータを追加したことを改定へのラフのポインタを取得し、svndumpfilterの候補となるでしょう。

for r in `svn log -q | grep ^r | cut -d ' ' -f 1 | tr -d r`; do
   echo "revision $r is " `svn diff -c $r | wc -c` " bytes";
done

また、特定の拡張子を持つファイルを追加したリビジョンを見つけるために、このような何かを試みることができる(ここでは、.JPG):

svn log -vq | egrep "^r|\.jpg$" | grep -B 1 "\.jpg$"
あなたが「削除SVN」を使用してリポジトリからファイルを削除した場合は、

、あなたが実際にファイルを削除しませんでした。これは、SVNの美しさでしょう。ファイルがリポジトリに追加されると、それが永遠である(ダンプ&ロードを使用していない限り)。ファイルを「削除」したら、あなたは実際に新しいリビジョンそのマークの削除を作成しますが、ファイルは以前のリビジョンに存在し続けます。

私はいくつかのダンプ&ロードを行ってますが、はるかに大きなリポジトリにしました。 60,000アラウンド(!!!)の改訂。それは時間がかかりましたが、最後に、慎重にロードした後、リポジトリが再構築されています。

あなたの唯一の方法は、ファイルを追加、修正、削除されたことリビジョンを一覧表示することです。そして、その間のリビジョンをダンプし、正しい順序でそれらをロードします。注意して、ミスの余地はありません。間違えた場合は、あなたは、最初からやり直す必要があります。開始からダンプ&ロードます。

大きなファイルは、このような問題がある場合は、

私の提案は、病歴を有さない、新しく新鮮なリポジトリを作成することを検討します。履歴比較のために、古いものを維持し、かつ新鮮から作業を開始します。

グッドラックます。

あなただけ怒らコミットを見つける必要があるとのリポジトリをホストしているサーバーへのアクセス権を持っている場合:リポジトリのDB /回転数サブディレクトリに大きなファイルの見た目(これはFSFS形式を使用しますと仮定した場合)。

これは余分なステップで、単に別の問題ではないですか?即ちあなたが大規模なバイナリであると考えていることのファイルを探し、(それがすでに適所にいた場合、またはパラレル資産システムからインポート)、彼らが実際にSVNで管理されているか、ローカルで構築されているかどうかを確認する必要があります。

だから、単にファイルを見つけ、それらのリポジトリのだ一部かどうかを調べるためにそれらにsvn infoを行います。

ただ、小さな思考は、リポジトリ(現在のHEAD)の現在の状態は、良好ですつまり、大きなバイナリファイルは、過去にdelete'edのsvnてきたと言います。したがって、あなたの問題は、純粋に、リポジトリの大きさですか?

私はあなたがすべての歴史をコミット維持したいと述べた知っているが、オプションとして、次の2つのダンプ、全体の改訂履歴に1つ、および現在のHEADリビジョンのための1つを行うことができます。

あなたは、たとえばDVDにでフルダンプを置く場合は、あなたが今までそれを必要に応じてデータが利用可能だろうが、あなたはその後、リポジトリ全体を削除することができ、小さなきれいなリポジトリであなたを残して、改訂ダンプをロードSVN。

そう、たとえば、あなたがリビジョンとダンプのすべての最後の3ヶ月を保つことができる、ただ頭ではなく、以降、特定のリビジョンからダンプすることも可能であるDVD ....

への古いです

Othersideの答えにエラボレーション、ここでは特に私のために働いていたものです。

svnadmin create new-repo
svnadmin dump old-repo | svndumpfilter exclude --pattern '*.exe' '*.jpg' '*.png' | svnadmin load new-repo

あなたはObjコマンドに追加することで、あなたのBinsvndumpfilterディレクトリを除外することができるかもしれない - 私はそれをしようとしなかった。

また、(fsfs-statsによって1.9に置き換えられたSubversion 1.8の新、)Subversionのsvnfsfs statsプログラムは、あなたのリポジトリを充填されているファイルの種類と、特定のファイルを定量化するために有用であるかもしれない。

これはその後のリポジトリを比較するのに有用であるかもしれない。

colordiff -u <(svn log -v file:///.../old-repo ) <(svn log -v file:///.../new-repo)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top