svn repository neu erstellen


8

Nach einem schwerwiegenden Serverfehler wurde das SVN-Repository zerstört und meine Arbeitsversion ist die aktuellste.

Wie kann ich das SVN-Repository aus meiner Arbeitsversion neu erstellen?

nachdem ich svn auf einem neuen server installiert und meine arbeitskopie ausprobiert habe

 svn switch NEW_SVN_PATH .

Ich bekomme einen Fehler

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'

Antworten:


2

Nach der Initialisierung der neuen SVN-Reporsitry

  1. Führen Sie auf dem Client einen SVN-Export des aktuellen Arbeitsverzeichnisses an einen anderen Speicherort durch
  2. Führen Sie vom exportierten Speicherort aus einen SVN-Import in die neue SVN-URL durch
  3. Führen Sie jetzt einen SVN-Umzug in das neu erstellte Repositry durch.

Während dies funktionieren könnte, denke ich, dass anstelle eines Umzugs eine neue Kaufabwicklung gut sein könnte


2

Musste damit umgehen. Ich benutze gehostete Subversion und habe einen Dump gemacht und dann importiert. Der Importvorgang hat die UUID nicht vom alten auf das neue Repo übertragen, sodass ich den gleichen Fehler wie beim OP erhalten habe. Alle Antworten auf den Stack Exchange-Sites zeigen Ihnen nur, wie Sie mit "svnadmin setuuid" damit umgehen können. Dies war jedoch keine Option für mich, da ich einen gehosteten Dienst verwende (und daher svnadmin keinen Zugriff auf das Repository hat ). Ich hätte ein Ticket eingeben können, wollte mich aber nicht mit dem Warten befassen. So habe ich es behoben, indem ich die UUID meiner Arbeitskopie manuell aktualisiert habe :

Warnung: Versuchen Sie dies nur, wenn Sie sicher sind, dass die Arbeitskopie und das Repository, auf das Sie erneut verweisen, absolut synchron sind. Ich bin mir nicht sicher, was passieren wird, wenn sie es nicht sind.

Der Prozess besteht im Wesentlichen darin, die alte UUID durch eine neue UUID in den Dateien mit dem Namen "Einträge" in den versteckten SVN-Ordnern (Ordner mit dem Namen .svn oder _svn) Ihrer Arbeitskopie zu ersetzen. Sobald dies erledigt ist, können Sie TortoiseSVNs "relocate" verwenden, um das Arbeitsverzeichnis auf die neue Repository-URL zu verweisen.

  1. CD im Konsolenfenster im Stammverzeichnis Ihres Arbeitsordners.
  2. Führen Sie den Befehl aus, um das Attribut "Nur Lesen" rekursiv aus den Dateien "Einträge" zu entfernen: attrib -R entries /S
  3. Verwenden Sie die Funktion "In Dateien ersetzen" eines Texteditors, um die alte UUID durch die neue UUID zu ersetzen. Ich habe Visual Studio mit den folgenden Einstellungen verwendet: Suchen in: PATH_TO_WORKING_FOLDER_ROOT / Unterordner einschließen: aktiviert / Diese Dateitypen anzeigen: Einträge
  4. Schritt 2 rückgängig machen: attrib +R entries /S
  5. Arbeitskopie "Verschieben" in neue URL. Ich habe TortoiseSVN verwendet: Klicken Sie mit der rechten Maustaste auf den Arbeitsordner TortoiseSVN-> Verschieben.

Alles, was Schritt 5 tut, ist, die URLs in den "Eintritts" -Dateien zu ersetzen, so dass Sie dies möglicherweise manuell tun können, wenn Sie möchten. Auch mit dem Kommandozeilen-Tool "svn" möglich, aber ich kenne den Befehl nicht genau.


Das ist intensiv. Ist das wirklich notwendig? Ich versuche nur, es herauszufinden, da mein Provider anscheinend unsere Repos verschoben hat und ich den gleichen Fehler erhalte.
Bis zum

0

Sie können die UUID für ein leeres Repository festlegen. Importieren Sie dann die Dateien, die Sie haben. Sie verlieren Ihren Verlauf (er wird nicht in der Arbeitskopie aufbewahrt). Indem Sie die UUID so einstellen, dass sie mit Ihrem alten Repository übereinstimmt, vermeiden Sie die Fehlermeldung auf dem svn-Switch.

$ 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

Meine Serverversion von svnadmin hatte keinen Unterbefehl setuuid. Vermutlich handelt es sich um einen neueren Befehl. dann fand ich eine Datei db / uuid im Repository, aber nachdem ich die Nummer darin geändert hatte, beschwerte sich svn immer noch, dass es nicht dasselbe Repository ist
Pavel K.

0

Ich hatte das gleiche Problem, aber da wir eine gehostete Option verwenden, konnte ich es auch nicht svnadmin.

Dies war ein externes Projekt, das ich in einem anderen Projekt verwendet habe, und ich habe dies getan, um es zu beheben:

  1. Sichern Sie alle meine lokalen Änderungen.
  2. rm -rf das Verzeichnis (das externe wird eingecheckt)
  3. entfernen svn:external(und das festschreiben)
  4. svn up
  5. füge das svn:externalnochmal hinzu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.