重大なサーバー障害の後、svnリポジトリが破壊され、私の作業バージョンは最新のものです。
作業バージョンからsvnリポジトリを再作成する方法は何ですか?
新しいサーバーにsvnをインストールし、作業コピーを試した後
svn switch NEW_SVN_PATH .
エラーが発生します
Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'
新しいsvnreporsitryを初期化した後
これはうまくいくかもしれませんが、私は再配置の代わりに、新鮮なチェックアウトが良いかもしれないと思います
これに対処しなければなりませんでした。ホストされたSubversionを使用し、ダンプしてからインポートしました。それらのインポートプロセスは、古いリポジトリから新しいリポジトリにUUIDを転送しなかったため、OPと同じエラーが発生しました。 Stack Exchangeサイトのすべての回答は、「svnadmin setuuid」を使用してこれに対処する方法を示しているだけですが、ホストされたサービスを使用しているため、これはオプションではありませんでした(したがって、svnadminはリポジトリにアクセスできません) )。チケットを入力することはできたが、待機を処理したくなかったので、次のようにします作業コピーのUUIDを手動で更新して修正しました:
警告:これは、作業コピーと再ポイントするリポジトリが完全に同期していることが確実な場合にのみ試してください。そうでない場合はどうなるかわかりません。
このプロセスは基本的に、作業コピーの非表示のsvnフォルダー(.svnまたは_svnという名前のフォルダー)にある「entries」という名前のファイルで、古いUUIDを新しいUUIDに置き換えることです。それが完了したら、TortoiseSVNの「再配置」を使用して、作業ディレクトリが新しいリポジトリURLを指すようにすることができます。
attrib -R entries /S
attrib +R entries /S
ステップ5で行うのは、私が思う「エントリ」ファイルのURLを置き換えることだけなので、必要に応じて手動で置き換えることができる場合があります。 「svn」コマンドラインツールでも可能ですが、頭のてっぺんからコマンドがわからないのです。
同じ問題が発生しましたが、ホストオプションを使用しているため、svnadmin
もできませんでした。
これは私が別のプロジェクトで使用した外部であり、これを修正するために行いました。
rm -rf
ディレクトリ(外部がチェックインされます)svn:external
を削除します(そしてそれをコミットします)svn up
svn:external
をもう一度追加します空のリポジトリにUUIDを設定できます。次に、持っているファイルをインポートします。あなたはあなたの歴史を失うでしょう(それは作業コピーに保存されません)。ただし、古いリポジトリと一致するようにUUIDを設定することで、svnスイッチのエラーメッセージを回避できます。
$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242 # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242