SVNリポジトリの再作成


8

サーバーに重大な障害が発生した後、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'

回答:


2

新しいsvnレポジトリを初期化した後

  1. クライアントで、現在の作業ディレクトリを別の場所にsvnエクスポートします
  2. エクスポートされた場所から新しいsvn urlにsvn importを実行します
  3. 作成された新しいリポジトリにsvn relocateしてください。

これはうまくいくかもしれませんが、再配置する代わりに、新しいチェックアウトが良いかもしれません


2

これに対処しなければなりませんでした。私はホストされたsubversionを使用し、ダンプしてからインポートしました。彼らのインポートプロセスは、UUIDを古いリポジトリから新しいリポジトリに転送しなかったため、OPと同じエラーが発生しました。Stack Exchangeサイトのすべての回答は、「svnadmin setuuid」を使用してこれに対処する方法を示しているだけですが、ホストされたサービスを使用しているため、これは私にとって選択肢ではありませんでした(したがって、svnadminはリポジトリにアクセスできません) )。チケットを入力できたかもしれませんが、待機に対処したくなかったので、作業コピーのUUIDを手動で更新して、次のように修正しました

警告:作業コピーと再ポイント先のリポジトリが完全に同期していることが確実な場合にのみ、これを試してください。そうでない場合はどうなるかわかりません。

プロセスは基本的に、作業コピーの非表示のsvnフォルダー(.svnまたは_svnという名前のフォルダー)の「entries」という名前のファイルで古いUUIDを新しいUUIDに置き換えることです。それが完了したら、TortoiseSVNの「再配置」を使用して、作業ディレクトリを新しいリポジトリURLにポイントできます。

  1. コンソールウィンドウで、作業フォルダーのルートにcdします。
  2. コマンドを実行して、「エントリ」ファイルから「読み取り専用」属性を再帰的に削除します。 attrib -R entries /S
  3. テキストエディタの「ファイルに置き換え」機能を使用して、古いUUIDを新しいUUIDに置き換えます。私は次の設定でVisual Studioを使用しました:探す:PATH_TO_WORKING_FOLDER_ROOT /サブフォルダーを含める:オン/これらのファイルタイプを見る:エントリ
  4. ステップ2を元に戻す: attrib +R entries /S
  5. 作業コピーを新しいURLに「再配置」します。私はTortoiseSVNを使用しました:TortoiseSVN-> Relocateの作業フォルダーを右クリックします。

ステップ5で行うことはすべて、「エントリ」ファイルのURLを置き換えることです。そのため、必要に応じて手動で行うことができる場合があります。「svn」コマンドラインツールでも可能ですが、頭の上のコマンドがわかりません。


これは激しいです。それは本当に必要ですか?私のプロバイダーが私たちのリポジトリを移動したようで、同じエラーが発生するので、私はそれを理解しようとしています。
2011

0

空のリポジトリに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

私のサーバーバージョンのsvnadminにはsetuuidサブコマンドがありませんでした。新しいコマンドの1つだと思います。それから私はリポジトリでファイルdb / uuidを見つけました、しかしその中の数を変更した後、svnはそれが同じリポジトリでないと不平を言いました
Pavel K.

0

私は同じ問題を抱えていましたが、ホストされたオプションを使用しているため、それもできませんでしたsvnadmin

これは私が別のプロジェクトで使用した外部であり、修正するためにこれを行いました:

  1. ローカルの変更をすべてバックアップします。
  2. rm -rf ディレクトリ(外部がチェックインされます)
  3. 削除svn:external(およびコミット)
  4. svn up
  5. svn:externalもう一度追加
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.