svn switch --relocate: falsche uuid?


7

Ich versuche, zu einem neuen SVN-Repository zu wechseln.

Ich habe derzeit die folgende Kasse:

$ svn info
svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk

Jetzt wollte ich wechseln, aber ich bekomme eine Fehlermeldung:

$ svn switch --relocate \
  svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk \
  https://subversion.assembla.com/svn/name/trunk/proj .
svn: The repository at 'https://subversion.assembla.com/svn/name/trunk/proj' 
has uuid '...', but the WC has '...'

Ich dachte, der svn switch --relocatespringende Punkt war, dass es zwei Repositories mit unterschiedlichen Benutzeroberflächen gibt. Wie kann ich richtig zu den neuen Repos wechseln?

Übrigens sollten die Verzeichnisse korrekt sein: Das alte proj/trunkund das neue trunk/projenthalten genau die gleichen Dateien usw.:

$ svn ls https://subversion.assembla.com/svn/<name>/trunk/proj
foo.txt
$ svn ls svn+ssh://some.server.edu/home/name/svn-repositories/proj/trunk
foo.txt

Ich benutze SVN 1.6.5 auf dem Mac.

Antworten:


7

svn switch --relocate erwartet, dass dasselbe Repository unter einer neuen URL gefunden wird, nicht unter einer anderen.

Haben Sie svnsyncdas neue Repository erstellt? In diesem Fall können Sie svnadmin setuuiddieselbe UUID wie das alte Repository verwenden. Gemäß der svnsync-Dokumentation im svn-Buch sollten Sie auf diese Weise vorhandene Arbeitskopien wiederverwenden können.


Ich habe dies mit einem svnsync gemacht, um ein Repo an einen neuen Ort zu verschieben. svnadmin setuuidden Tag retten!
Matt Connolly

3

Das --relocateFlag aktualisiert Ihre Arbeitskopie, wenn sich die URL, die zum Erreichen Ihres vorhandenen Repositorys verwendet wird, ändert. Es gibt keine gute Möglichkeit für SVN, eine Arbeitskopie in ein neues Repository zu wechseln , da eine Reihe anderer Dinge unterschiedlich sein kann - der Verlauf, die Anzahl der Eincheckvorgänge und der Inhalt der Dateien , und so weiter, und SVN ist nicht dafür ausgelegt, diese Art von Unterschieden zu berücksichtigen.

Sie haben Ihre Frage nur aus Kundensicht gestellt, aber es wäre nützlich, ein größeres Bild davon zu haben, was Sie tun möchten. Versuchen Sie beispielsweise, Ihr eigenes Repository auf einen neuen Server zu verschieben? Wenn ja, welche Methode haben Sie angewendet, und könnte es eine bessere geben? Oder haben Sie ein Repository verwendet, das von einer anderen Person verwaltet wurde, und diese hat es verschoben? Ist der gesamte Verlauf des alten Repositorys im neuen Repository vorhanden? Gibt es einen Grund, warum Sie die SVN-Datenbankdateien nicht auf den neuen Server kopieren können, anstatt ein brandneues Repository zu erstellen?

Es gibt eine Möglichkeit, das zu erzwingen, was Sie möchten: Löschen Sie Ihre .svn-Verzeichnisse aus Ihrer Arbeitskopie (erstellen Sie zuerst eine Sicherung!), Checken Sie eine neue Kopie vom neuen Server aus und verschieben Sie alle .svn-Verzeichnisse aus dem neue Kopie an die entsprechenden Stellen in Ihrer Arbeitskopie. Aber tun Sie das erst, wenn Sie das Gesamtbild betrachtet haben.

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.