So aktualisieren Sie v2 auf v3 FSFS-Subversion-Dateisystem

9

Zunächst versuche ich, einen Zweig mit dem Trunk wieder zu integrieren (mithilfe von TortoiseSVN), erhalte jedoch die Fehlermeldung "Das Abfragen von Zusammenführungsinformationen erfordert Version 3 des FSFS-Dateisystemschemas; Dateisystem E: / MyRepository / verwendet nur Version 2".

War es wirklich nicht möglich, Zweige in früheren Versionen von Subversion wieder zu integrieren? Oder gibt es einen anderen Weg, dies zu tun?

Wie kann ich das Dateisystem von Version 2 auf Version 3 aktualisieren?

cbp
quelle

Antworten:

6

Sie haben die Version von Subversion, die auf Ihrem Server ausgeführt wird, nicht angegeben. Basierend auf der Nachricht, die Sie in der Frage angegeben haben, handelt es sich wahrscheinlich um eine Version 1.4.x oder älter. Ich erinnere mich nicht, ob ein Upgrade-Befehl für die Konvertierung von 1.4.x nach 1.5.x bereitgestellt wurde oder nicht, aber der sichere Weg, um Ihr Repository von Version 2 auf Version zu bringen, ist ein Dump and Load. Aber das macht nicht viel aus, Sie sollten trotzdem 1.6.x installieren, um mit der neuesten Version zu arbeiten. Hier sind die Schritte, die Sie ausführen müssen:

  • Aktualisieren Sie auf Subversion 1.6.x, falls dies noch nicht geschehen ist
  • Speichern Sie Ihr vorhandenes Repository mit svnadmin dump
  • Erstellen Sie ein neues Repo und nennen Sie es _new
  • Laden Sie Ihr neues Repo mit dem Dump des alten mit svnadmin load
  • Kopieren Sie die UUID-Datei aus dem alten Repository in das neue Repository
  • Benennen Sie das alte Repository in _old um
  • Benennen Sie das neue Repository in um

Ein konkretes Beispiel finden Sie unter Subversion-FAQ http://subversion.apache.org/faq.html#dumpload .

Das sollte Sie erledigen und die UUID-Datei wird Ihre Kunden davon abhalten, auszuflippen. Führen Sie jedoch ein SVN-Update durch, um sicherzugehen.

jgifford25
quelle
2
aus svnadmin help loadNachricht : --force-uuid : set repos UUID to that found in stream, if any. Kurzum: Sie müssen nicht mit Dateien spielen
Hubert Kario
@ Hubert Kario: Ja, die Kommandozeile hat diese Option. Aber nicht alle GUI-Clients tun dies. Und wenn Sie dies auf der Serverseite tun können, wird dies für die Benutzer nur einfacher. Aber ich werde diesen Schalter im Hinterkopf behalten, wenn ich das nächste Mal auf dieses Problem stoße. Danke für den Tipp!
jgifford25
Achten Sie beim Erstellen Ihres neuen Repositorys auf das Festlegen von Berechtigungen. Wenn Sie beispielsweise über apache mod_svn auf das Repository zugreifen, Apache unter Benutzer "www", Gruppe "www" ausgeführt wird und Sie als "fred" angemeldet sind, benötigen Sie wahrscheinlich sudo chown -R fred:www myrepositorysudo chmod g+wmyrepository/db/repcache.dbmyrepository/db/uuid
Folgendes
8

Dump / Load ist für das Upgrade von Subversion-Repositorys nicht erforderlich. Verwenden Sie den Befehl svnadmin upgrade:

svnadmin upgrade <path-to-repos>

ANMERKUNG: svnadmin-Upgrade "führt nur den minimalen Arbeitsaufwand aus, der erforderlich ist, um dies zu erreichen, während die Integrität des Repositorys erhalten bleibt. Ein Speicherauszug und das anschließende Laden garantieren zwar den optimiertesten Repository-Status, das svnadmin-Upgrade jedoch nicht." - Siehe auch Dokumentation zum Upgrade von svnadmin

Ivan Zhakov
quelle
1
Beachten Sie jedoch, dass dies "nur den minimalen Arbeitsaufwand ausführt, der erforderlich ist, um dies zu erreichen, während die Integrität des Repositorys erhalten bleibt. Während ein Speicherauszug und das anschließende Laden den optimalsten Repository-Status garantieren, ist dies bei svnadmin-Upgrades nicht der Fall." - Siehe auch svnbook.red-bean.com/de/1.7/svn.ref.svnadmin.c.upgrade.html
Jörg
1
Beachten Sie auch, dass "Sie Ihr Repository immer vor dem Svnadmin-Upgrade sichern sollten", während Sie mit dump / load Ihre Sicherung implizit haben.
Jörg
5

Ivan hat einen guten Tipp, der funktioniert, ich habe es versucht und es ist sehr einfach.

svnadmin upgrade <path-to-repos>

Eine Sache, die ich in Ivans Beispiel vermisst habe und die für andere nützlich sein kann, ist:

Ex.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

Zeigen Sie mit svnadmin nicht auf das Datenbankverzeichnis, sondern auf das Verzeichnis, das das Datenbankverzeichnis enthält.

Per G.
quelle