Wiederherstellen eine Subversion-Repository und bekommt es wieder Up-to-Date mit lokalen Änderungen von allen

StackOverflow https://stackoverflow.com/questions/1440950

Frage

Ich habe verwenden, um die Hotcopy nicht meine Subversion-Repository zu sichern. Wir verwenden von Visual SVN Server (spätestens) mit Schildkröte. Ich kopierte C: \ Repositorys und gesichert, dass vor ein paar Tagen und jetzt will ich es wiederherstellen

.

Ich bin in der Lage, das Repository zu verwenden, jetzt mit dem Repository-Ordner gesichert kopiert.

und dann denke ich jetzt habe ich manuell über jedes lokales Projekt auf dem Team gehen, um zu sehen, der die neuste Revision hat? Wenn dem so ist, dass wird mich Stunden.

Wer weiß, ob dies der richtige Weg oder nur so? Ist es wirklich dieses Handbuch? Ich denke, es wäre, weil jeder verschiedene Änderungen lokal hat.

War es hilfreich?

Lösung

Wie wäre es dieser Ansatz, jeder Entwickler:

  1. Ist ein TortoiseSVN -> Export ihrer jetzt ungültig Arbeitskopie in ein temporäres Verzeichnis
  2. Ruft eine neue Kasse aus dem restaurierten Repository
  3. Kopiert die exportierte Arbeitskopie (das heißt keine .svn dirs), über die Spitze des neuen Arbeitskopie
  4. Update und Commit wie gewohnt

Beachten Sie, dass Sie Konflikte als sonst bekommen mehr verschmelzen können, aber sie können in der üblichen Weise gelöst werden.

Andere Tipps

Alle Änderungen, die seit der letzten Sicherung vorgenommen wurden, sind im Repository nicht vorhanden ist, und jeder wird eine neue Kasse aus dem restaurierten Repository zu tun hat. (Die Revisionsnummern haben sich geändert, und Sie werden ein Chaos, wenn Sie dies nicht tun.)

Wie für alle Änderungen von Entwicklern lokalen Kopien Bergungs, ja, das wird eher manuell sein. Doch „diff“ und „Patch“ sind deine Freunde. Wenn Sie nicht vertraut mit Cygwin sind, möchten Sie, dass erhalten und die diff, Patch, diffutils zu erhalten, und patchutils Pakete, damit Sie den ‚diff‘ Befehl und der ‚Patch‘ Befehl haben. Sie können den „diff“ Befehl verwenden, um eine Datei mit dem Delta zwischen einer Kopie des Quellbaumes und einer andere zu schaffen. Sie werden es so verwenden möchten:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch

Sie, dass für jeden Arbeitskopie des Entwicklers. Sie können diese Dateien nehmen und die Änderungen an einer frischen Kasse mit der „Patch“ Befehl wie folgt anwenden:

cd working_copy
patch -p1 -i ...../developer1changes.patch

Sie werden nun eine Arbeitskopie mit ihren Änderungen haben. (Obwohl ohne ihren SVN fügt hinzu: svn rms und Eigenschaftsänderungen.) Von dort festzustellen, was begangen werden muss.

Sie können die „filterdiff“ Befehl verwenden, um die Patch-Datei und Filterteile der Änderungen herauszunehmen, Rohr, das, zu flicken und es gelten nur jene Änderungen.

bearbeiten: Andere Option: für jeden Entwickler, einen Zweig erstellen und diesen Zweig Kasse, dann ihre lokale Kopie über die Dateien in dieser neuen Arbeitskopie kopieren und begehen.

Das wird die ganze Arbeit im Repository, in dem sie nicht verloren gehen. Sie müssen dann mit Konflikten umgehen, wenn sie versuchen, die Zweige in den Stamm zu verschmelzen. An diesem Punkt sollten Sie in der Lage sein, die GUI-Tools zu verwenden, um auszuwählen, welche zu halten ändert oder werfen.

Aber die kurze Antwort ist: Sie haben eine Menge Arbeit zu tun habe, da Sie nicht eine sehr aktuelle Sicherung des Repo haben ... also einmal y'all der Lage ist, wieder zu arbeiten, ein Setup viel mehr häufiger Backup-Zeitplan.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top