Ich habe ein SVN Repo mit Hauptverzeichnissen wie folgt:
%Vor%In meiner Arbeitskopie sind das eigentlich Unterverzeichnisse eines viel größeren Baumes ...
%Vor%Ich möchte meinen Repo so reorganisieren, dass / food / tatsächlich die Wurzel des Repos ist ... aber meine Arbeitskopie ist ein Live-Server , also muss ich sehr vorsichtig sein um etwas zu brechen, auch nur für eine Minute. Es ist auch ein wirklich großer Baum, also kann das Zurückrollen eines Fehlers möglicherweise zu einer merklichen Ausfallzeit führen.
Wenn ich nur Ordner innerhalb des Repos verschieben würde, denke ich, dass ich svn move
mit Repo-Argumenten verwenden könnte (und ich nehme an, dass das immer noch Schritt # 1 ist?) ... aber ich weiß nicht, wie Um die Änderung auf die Arbeitskopie anzuwenden, fügen Sie die übergeordneten Ordner hinzu, ohne die vorhandenen Arbeitsdateien zu beschädigen.
MEINE ANTWORT: Danke an A.H.
1) Stellen Sie sicher, dass der Repo aktuell ist, und verschieben Sie dann den Zweig innerhalb des Repos. Dies kann mithilfe von svn move
-Befehlen im Repo selbst oder durch Aktionen in einer Arbeitskopie erfolgen. Dies hat keinen Einfluss auf die Live-Arbeitskopie (nicht svn update
noch!). Das ist der einfache Teil.
2) svn switch
die Verzweigung zum neuen Ort. In diesem Beispiel war Obst zuvor die Wurzel des Repos:
Ich wusste vorher nicht viel über svn switch
, aber das war nicht allzu schwierig. Dies ändert alle .svn-Metadaten, wirkt sich jedoch nicht auf tatsächliche Dateien aus.
3) Hier ist der schwierige Teil. Sie müssen diese Schritte in schneller Folge für minimale Ausfallzeiten (sie sind jeweils sehr schnell):
%Vor% Was passiert, ist, dass der Checkout mit --depth immediates
die Metadaten für den Inhalt von / food / erstellt und das / fruit / -subdir erstellt, aber nicht seinen Inhalt (wir müssen rm -rf
verwenden) so können wir den .svn-Ordner innerhalb der Frucht loswerden, aber das ist alles, was da ist). Dann tauschen wir einfach den echten Inhalt wieder ein und Eltern und Kind sind nun zusammengenäht. Sobald der mv
fertig ist, sind wir wieder online. Der set-depth infinity
erweitert den Umfang der Arbeitskopie auf das, was Sie erwarten würden. Endlich können wir svn add
der Geschwister des Kindes (egggies).
Mein erster Tipp ist, mit einer neuen Arbeitskopie anzufangen, die NICHT live ist. In dieser Arbeitskopie (WC) können Sie Dinge ohne Gefahr ausprobieren. Das ist was funktioniert und kopiert bedeutet wirklich; -)
Noch ein Tipp: Verwenden Sie die zweite Arbeitskopie, um die bestehende Struktur Schritt für Schritt in die gewünschte Struktur zu bringen. Nachdem alles eingerichtet ist, checken Sie ein. Bitte beachten Sie, dass Umstellungen mit den svn
-Befehlen vorgenommen werden müssen.
Verwenden Sie dann eine andere Arbeitskopie, um zu überprüfen, ob Ihr letzter Check-in tatsächlich das getan hat, was Sie eingerückt haben.
Dann können Sie Ihre Live-Arbeitskopie aktualisieren oder einfach das letzte WC mit der Live-Site wechseln, indem Sie den normalen mv
-Befehl verwenden.
Schritt für Schritt:
%Vor%Jetzt check ein frisches WC zu verify - das Live-WC ist noch unverändert!
%Vor%Wechseln Sie nun das Live-WC und das verify WC im Dateisystem - das ist schnell, wenn sie sich im selben Dateisystem befinden!
%Vor%Jetzt ist das Live-WC behoben. Eine Alternative für den ast-Block kann sein:
%Vor%Dies sollte nichts zeitaufwendig machen - aber bitte überprüfen Sie dies zuerst mit einer Sicherungskopie: -)
Ich würde einen Ersatz erstellen und dann Svn-Schalter auf Ihrer Live-Arbeitskopie verwenden, um zu ihr zu wechseln.
1) svn Kopieren Sie Ihr gesamtes Arbeitsverzeichnis in ein neues Arbeitsverzeichnis
2) Erstellen Sie die übergeordneten Ordner in Ihrer neuen Arbeitskopie
3) svn kopiert oder verschiebt Dateien von ihrem aktuellen relativen Speicherort in der Kopie an die vorgesehenen Speicherorte.
4) Wenn Sie mit der Einrichtung der neuen Arbeitskopie vollkommen zufrieden sind, committen Sie sie
5) Verwenden Sie jetzt in Ihrer Live-Version svn switch, um auf das neue Arbeitsverzeichnis zu retargetieren
Momentan erleidet Ihr Server eine gewisse Reorganisation, da SVN die vorhandenen Dateien entfernt und die neuen Dateien auscheckt. Aber es wird so schnell sein, wie es der switch-Befehl svn machen kann.
Tags und Links svn