少し古い Subversion リポジトリのバックアップからのリカバリ
-
09-06-2019 - |
質問
しばらく前に遭遇した問題ですが、良い解決策が見つかりませんでした...
Subversion からリビジョン 7500 でチェックアウトされた作業コピーがあり、現在のリポジトリを保持しているディスクが停止したとします。たとえば、リポジトリのバックアップがリビジョン 7450 にあるとします。リポジトリのバックアップを復元するのは簡単ですが、それに対して作業コピーを使用しようとすると、リポジトリにリビジョン 7500 が存在しないというエラーが表示されます。
1 つの巨大なリビジョンをチェックインしてリポジトリの内容を作業コピーの内容と一致させ、作業コピーを機能的な状態に戻す最善の方法は何でしょうか?
(理想的には、新しい作業コピーをチェックアウトしてからすべてのファイルを手動でコピーするよりも簡単な方法が欲しいと思っています。当時、作業コピーはサーバーの構成管理に使用されていたと思います。クリーンな作業コピーをチェックするため)
解決
rev.7450 のコピーをどこかにチェックアウトしてから、7500 のコピーをエクスポートします (.svn フォルダーを削除するため)。エクスポートされたコピー (最新のコピー) を 7450 コピーの上にドラッグします。すべての新しいファイルは、.svn フォルダーを同じままにして、古いファイルを単純に上書きする必要があります。
Subversion は、7450 に多数の変更を加えたと想定し、次回のチェックインでは 7451 に設定します。
他のヒント
別のフォルダーに新たにチェックアウトし、diff プログラムを使用してパッチを作成します。新しい作業コピーにパッチを適用します。
ディレクトリに最新バージョンがあることが確実な場合は、次の手順を実行します。
- リポジトリからアイテムを削除します
- コピーから SVN 参照を削除します。
- コードを新しいコピーとしてチェックインします。
- チェックインしたばかりのコードを確認してください
空のリビジョンが多数含まれたダンプ ファイルをロードすることで、欠落しているリビジョン番号を埋めることができます。これを行う方法を議論する回答があります。 リポジトリのリビジョン番号を変更するにはどうすればよいですか. 。この方法で 1 つを除くすべてのリビジョンをロードすると、最後の 1 つの大きなリビジョンにすべての変更をチェックインするだけで済みます。