10

2 つのリポジトリで作業する必要があり、リビジョン履歴を保持しながら、2 つの間でコードを含む 1 つのディレクトリを移動したいと考えています。

ここSOでいくつかの質問を読みましたが、どちらに進むべきかまだわかりません。すべてがチェックインされているため(コード+デザインデータ+ ...)、リポジトリは巨大です(リビジョンを含まないファイル(orkingcopy)>数GB)

これまでに見た解決策は次のとおりです。

  1. svnadmin ダンプ + フィルター + インポート:リポジトリのサイズのためオプションではありません
  2. svnsync:すでに 2 番目のリポジトリにデータがあります (リポジトリはすでに巨大です。それらをマージするのは良い考えではないと思います。それは私の仕事ではないと判断しています)。空の。
  3. サードパーティのソリューション:「別のプロセスがファイルを開いた」ためにファイルを削除できないため、繰り返しクラッシュします(ただし、OSを介してファイルを削除でき、スクリプトによって作成されます)

これに対する他の解決策、アプローチはありますか、または解決策の1つについて何か不足していますか?

4

1 に答える 1

9

svnadmin ダンプ + フィルター + インポートは、大きなリポジトリでも機能します。

パフォーマンスのために必要なことがいくつかあります。コピーするフォルダーを最初に作成したリビジョンを確認します。次に、ログをチェックして、そのフォルダー内の何かを変更した最後のリビジョンを見つけます。その範囲のリビジョンのみをダンプする必要があります。

--incremental フラグを使用して svndump を実行します。

SVN Dump で Deltas フラグを使用しないでください。SvnDumpFilter は、「デルタ」で作成されたダンプでは機能しません。巨大なダンプをファイルに保存して、そのファイルに対して SvnDumpFilter を実行しようとしないでください。代わりに、パイプを使用して 1 ステップで実行します。

開始リビジョンが 10000 で終了リビジョンが 20000 で、コピーするパスが projects/source の場合、コマンドは次のようになります。

svnadmin dump --incremental -r10000:20000 YourRepoPath | svndumpfilter include projects/source --drop-empty-revs --renumber-revs > source.dump

次に、svnadmin load コマンドを実行して、ダンプを他のレポにロードします。

于 2012-10-22T15:05:58.463 に答える