svnsync
ちょっとした体操で、EOL を修正する機能を持つ を使用して、これを回避できます。リポジトリが にダンプされたとしましょうarchive.svn
。
最初に、EOL の問題を無視して、レポジトリを再度ロードするためのレポジトリを作成します。
svnadmin create repo
svnadmin load repo < archive.svn --bypass-prop-validation
次に、コピー先の新しいリポジトリを作成します。
svnadmin create repo-fixed
svnsync
使用しない場合でも、いくつかの pre-commit フックが必要なので、エディターを使用して に空のものを作成してくださいrepo-fixed/hooks/pre-revprop-change
:
#!/bin/sh
exit 0
の宛先リポジトリを初期化しますsvnsync
:
svnsync init file:///path/to/repo-fixed file:///path/to/repo
次に、リポジトリ全体をコピーします。
svnsync sync file:///path/to/repo-fixed
うわー!svnsync
良いニュースさえあります: NOTE: Normalized svn:* properties to LF line endings
(Subversion チームが同じ正規化を行うように更新しなかった理由はsvnadmin
、私には謎です。)
それが完了したら、新しいリポジトリをダンプします。
svnadmin dump repo-fixed > archive-fixed.svn
これは、必要に応じて EOL が修正されていることを除いて、archive-fixed.svn
と同じはずです。archive.svn
(オプション) に使用した一時リポジトリを削除できるようになりましたsvnsync
。
rm -rf repo-fixed
更新この新しいダンプをロードすると、Subversion クライアントでエラーが発生することが判明しました:Repository UUID does not match expected UUID
. を使用svnadmin setuuid ...
して、UUID ID を以前のものに変更する必要があります。
(この投稿は、Web で見つけた多数のスニペットと部分的な解決策の集大成です。私よりも多くのことを知っていたすべての人々に感謝します。すべてをまとめただけです。)
以下も参照してください。