web-dev-qa-db-ja.com

svnリポジトリの再作成

重大なサーバー障害の後、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'
8
Pavel K.

新しいsvnreporsitryを初期化した後

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

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

2
Dinesh Manne

これに対処しなければなりませんでした。ホストされた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に置き換えます。次の設定でVisualStudioを使用しました。検索:PATH_TO_WORKING_FOLDER_ROOT /サブフォルダーを含める:チェック済み/これらのファイルタイプを確認:エントリ
  4. 手順2を元に戻します:attrib +R entries /S
  5. 作業コピーを新しいURLに「再配置」します。 TortoiseSVNを使用しました:作業フォルダーを右クリックし、TortoiseSVN-> Relocate。

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

2
Giscard Biamby

同じ問題が発生しましたが、ホストオプションを使用しているため、svnadminもできませんでした。

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

  1. ローカルの変更をすべてバックアップします。
  2. rm -rfディレクトリ(外部がチェックインされます)
  3. svn:externalを削除します(そしてそれをコミットします)
  4. svn up
  5. svn:externalをもう一度追加します
0
Till

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