3

によって生成された SVN ダンプをフィルタリングすることは可能ですsvndamin dump。したがって、エンコードされたバイナリ データは含まれず、テキスト デルタとデータのみが含まれますか?

既存の大規模な SVN リポジトリのダンプが必要ですが、コードのみです。保存されたバイナリには興味がありません。ただし、バイナリ ファイルを使用すると、ダンプ ファイルが不必要に大きくなります。ダンプを生成してバイナリ コンテンツを除外するにはどうすればよいですか?

試して失敗しました、すでに:

  1. svn log差分を処理するのは現実的ではありません。これは大規模で古いリポジトリであり、短期間だけ差分を取得するには多くの時間がかかり、しばしばスタックします。
  2. バイナリファイルはいたるところに散らばっており、単一の既知のパスに保存されていないためsvndumpfilter、それらを除外することはできません-このフィルターを正規表現で使用する方法がない限り、*.jar.
4

2 に答える 2

3

svndumpfilterは Subversion インストールの一部です

svndumpfilter exclude— 指定されたプレフィックスを持つノードをダンプ ストリームから除外します。

Subversion 1.7 から、svndumpfilter はオプションで PATH_PREFIX を単に明示的な部分文字列としてではなく、代わりにファイル パターンとして扱うことができます。

$ svndumpfilter exclude --pattern "*.OLD" < dumpfile > filtered-dumpfile
Excluding prefix patterns:
   '/*.OLD'
于 2012-12-21T16:56:53.057 に答える
1

これを行うためのストックツールを知りません。しかし、この perl モジュールから始めれば、難しくはないはずです: SVN::Dumpfilter

そこにあるサンプル スクリプトの 1 つ (svndump_delpathfilter) は、おそらくあなたが望むものにかなり近いものです。このモジュールに関する私の経験では、おそらく、やりたいことを実行するには少しいじる必要があるでしょう。

Subversion (最下位レベル) はあまり気にしないので、テキスト ファイルからバイナリを確実に識別する方法はないと思います。私のリポジトリを簡単にスキャンすると、svn:mime-type プロパティが常に設定されているとは限らず、他に示すフィールドが表示されないことがわかります。そのため、名前で確認するか、(どういうわけか)ファイルの内容を調べてみる必要があります(ただし、後者は行ったことがありません)。

于 2012-12-21T06:17:54.217 に答える