2012-12-19 28 views
75

Meine aktuelle SVN-Struktur:ändern SVN-Repository URL

Path: . 
URL: svn://someaddress.com.tr/project 
Repository Root: svn://someaddress.com.tr 
Repository UUID: ------------------------------------- 
Revision: 10297 
Node Kind: directory 
Schedule: normal 
Last Changed Author: ---- 
Last Changed Rev: 9812 
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010) 

Aber unser Projekt (daher der SVN-Dienst) wird über sub.someaddress.com.tr arbeiten statt someaddress.com.tr (someaddress.com.tr wird woanders bald umgeleitet werden).

Da es der Entwicklungsserver ist, konnte ich nicht sicher sein, was zu tun ist. Muss ich svn switch oder svn switch --relocate verwenden? Muss ich auch svn root someaddress.com.tr oder den Projektzweig wechseln someaddress.com.tr/project?

Antwort

146

Da die Apache Subversion-Server auf diesen neuen DNS-Alias ​​verschoben werden: sub.someaddress.com.tr:

  • Mit Subversion 1.7 oder höher, svn relocate verwenden. Relocate wird verwendet, wenn sich der Standort des SVN-Servers ändert. switch wird nur verwendet, wenn Sie Ihre lokale Arbeitskopie in eine andere Verzweigung oder einen anderen Pfad ändern möchten. Wenn Sie TortoiseSVN verwenden, können Sie den Anweisungen von TortoiseSVN Manual folgen. Informationen zur Verwendung der SVN-Befehlszeilenschnittstelle finden Sie unter this section of SVN's documentation. Der Befehl soll wie folgt aussehen:

    svn relocate svn://sub.someaddress.com.tr/project

  • weiterhin verwendet /project gegeben, dass der tatsächliche Inhalt des Repository wird wahrscheinlich nicht ändern.

Hinweis: svn relocate ist nicht verfügbar, vor der Version 1.7 (dank ColinM für die Info). In älteren Versionen verwenden Sie:

svn switch --relocate OLD NEW 
+33

svn relocate ist nicht verfügbar pre 1.7. Für die Version 1.7 würde man 'svn switch --relocate OLD NEW' verwenden. – ColinM

+0

Die zusätzlichen TortoiseSVN Links sind sehr hilfreich, danke dafür – MOnsDaR

+0

Ich wusste nichts über den' switch' Befehl. Die gesamte Dokumentation, die ich online gefunden habe, ist für neuere Versionen. –

5

In meinem Fall der svn relocate Befehl (sowie svn switch --relocate) failed aus irgendeinem Grunde (vielleicht war das Repo nicht richtig bewegt, oder etwas anderes). Ich sah diesen Fehler:

$ svn relocate NEW_SERVER 
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46' 

Ich wollte nicht das gesamte Repository erneut herunterladen, so dass ich eine Problemumgehung gefunden. Es funktionierte in meinem Fall, aber im Allgemeinen kann ich mir vorstellen, dass viele Dinge kaputt gehen können (also entweder deine Arbeitskopie sichern oder bereit sein, das gesamte Repo erneut zu checken, wenn etwas schief geht).

Die Repo-Adresse und ihre UUID werden in der SQLite-Datenbankdatei in Ihrer Arbeitskopie gespeichert. Öffnen Sie einfach die Datenbank (z. B. im SQLite-Browser), durchsuchen Sie die Tabelle REPOSITORY, und ändern Sie die Spaltenwerte root und uuid in die neuen Werte. Sie können die UUID des neuen Repos finden, indem Sie svn info NEW_SERVER ausgeben.

Behandeln Sie dies wiederum als letzte Möglichkeit.

+0

@IgorGanapolsky: Könnten Sie genauer sein? –

+1

Wenn Sie meine Post sorgfältig lesen, empfehle ich nicht, irgendwelche Befehle auszuführen. Ich schlage vor, die SQLite DB zu bearbeiten. –

3

greppen die URL vor und nach könnten Sie einige Ruhe:

svn info | grep URL 

    URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    Relative URL: (...doesn't matter...) 

und Überprüfung von Ihrer Version (zu> 1.7), um sicherzustellen, svn relocate ist das Richtige zu verwenden:

svn --version 

schließlich auf die oben hinzufügen, wenn Ihre Repository-URL Änderung beinhaltet auch eine Änderung des Protokolls müssen Sie möglicherweise dem vor und zum Zustand nach url (auch see here)

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal 

alles in einer einzigen Zeile von course.Thereafter, bekommt das gute Gefühl, dass alles verlief reibungslos:

svn info | grep URL: 

Wenn Sie Lust haben, ein bisschen mehr Selbstsicherheit, wird die neue SVN-Repo-URL verbunden und arbeitet:

svn status --show-updates 
svn diff