1

いくつかのブランチ リポジトリを別のリポジトリにマージする必要がありましたが、代わりに、誤って宛先リポジトリを上書きした "svn copy" を使用したため、ファイルの一部が失われました。良いニュースは、「svnadmin dump」で作成された毎日のバックアップがあることですが、失われたファイルを復元し、後で追加された新しいファイルを保持するためにどのように進めるのが最善かはわかりません.

私はこのようにすることを考えていました:

  1. いくつかのsvn一時リポジトリを作成します
  2. 「svn load /path/to/the/temp-repository/」を使用
  3. cd /path/to/the/temp-repository/
  4. すべての .svn ディレクトリを再帰的に削除します
  5. 上書きしたブランチに移動し、rsync を使用して失われたファイルを作業リポジトリに送信します。

これが最善のアプローチかどうかはわかりません。何かご意見は ?

4

1 に答える 1

1

私はあなたに良いニュースがあります

Subversion は変更間のすべての履歴を保存します。

誤っsvn copyて追加のコミットを宛先ブランチに追加した場合。あなたはできる

  • svn up GOODREV良いコミット (またはsvn co BRANCH@GOODREV新しい WC へ) とコミット (マイナーな編集保存コミット) への悪い上に
  • 逆マージによる悪いコミットの取り消し

svnadmin ダンプの場合

これらのバックアップが増分 (--incremental) か完全かを特定する必要があります。フルの場合、GOODREV が存在するバックアップを見つける必要があります。svnadmin loadこのダンプは、NEW-REPO ブランチから OLD-REPO ブランチへの新しいリポジトリにダンプされ、復元されたリポジトリを強制終了します。svn copy

ヒント: リポジトリ管理をよりよく学ぶ必要があります: pp. 4-5 はただのせん妄です - SVN リポジトリにはまったく異なるファイル ツリーがあり、リポジトリのサブツリーは同じ構造の物理ツリーとして存在しません (そして .svn ファイルはワーキング コピー属性であり、 WC メタデータの保存)

svndump のバスト論理的で (あなたよりも) 優れた使用法は、やはり異なります。それでもエラーを目から隠したい場合は、

  • BADREVISION を除外するリビジョンの範囲 (-r LOWER:UPPER オプション) の新しいフル ダンプを作成します。
  • すべての接続を無効にする
  • 古いリポジトリを削除します (rm REPODIR + mkdir REPODIR)
  • ダンプからレポを復元する
于 2012-11-08T06:04:59.777 に答える