7

しばらく前に遭遇した問題で、適切な解決策が見つかりませんでした...

リビジョン 7500 の subversion からチェックアウトした作業コピーがあり、現在のリポジトリを保持しているディスクが死んだとします。たとえば、リビジョン 7450 のリポジトリのバックアップがあります。リポジトリのバックアップを復元するのは簡単ですが、それに対して作業コピーを使用しようとすると、リポジトリにリビジョン 7500 が存在しないというエラーが表示されます。

1 つの巨大なリビジョンをチェックインして、リポジトリのコンテンツを作業コピーのコンテンツと一致させ、作業コピーを機能状態に戻す最善の方法は何ですか?

(理想的には、真新しい作業コピーをチェックアウトして、すべてのファイルを手動でコピーするよりも簡単なものが欲しいです。当時、作業コピーはサーバーの構成管理に使用されていたと思います。クリーンな作業コピーをチェックアウトするため)

4

4 に答える 4

6

rev.7450 のコピーをどこかにチェックアウトしてから、7500 のコピーをエクスポートできます (.svn フォルダーを削除するため)。エクスポートされたコピー (最新のコピー) を 7450 コピーの上にドラッグします。新しいファイルはすべて古いファイルを単純に上書きし、.svn フォルダーは同じままにする必要があります。

Subversion は、7450 に一連の変更を加えたと想定し、次のチェックインでそれを 7451 に設定します。

于 2008-09-11T13:41:59.777 に答える
5

別のフォルダに新たにチェックアウトしてから、差分プログラムを使用してパッチを作成します。新しい作業コピーにパッチを適用します。

于 2008-09-11T13:39:15.290 に答える
1

空のリビジョンの束を含むダンプ ファイルをロードすることで、不足しているリビジョン番号を埋めることができます。How can I change the Revision Number of a repositoryでこれを行う方法について説明している回答があります。この方法で 1 つを除くすべてのリビジョンをロードすると、すべての変更を最後の巨大なリビジョンにチェックインできます。

于 2010-07-20T22:38:35.547 に答える
1

ディレクトリに最新バージョンがあることが確実な場合は、次のようにします。

  1. リポジトリからアイテムを削除する
  2. コピーから SVN 参照を削除します
  3. コードを新しいコピーとしてチェックインします。
  4. チェックインしたコードをチェックアウトする
于 2008-09-11T13:51:16.930 に答える