Ich habe den Fehler gemacht, ein Subversion-Repository ohne die üblichen Verzeichnisse trunk
, branches
und tags
zu erstellen. Das heißt, das Stammverzeichnis des Projekts wird dem Stammverzeichnis des Repositorys zugeordnet. Jetzt möchte ich einen Feature-Zweig erstellen, aber es gibt keinen guten Platz dafür. Was ich tun möchte, ist /
zu /trunk
verschieben, unter Beibehaltung seiner Eigenschaften und Geschichte. Habe ich kein Glück?Gibt es eine saubere Möglichkeit, sich zu bewegen?
Antwort
Der saubere Weg, dies zu tun, ist svnadmin
mit dem gesamten Repository
svnadmin dump
Dann an der Wurzel ein neues Repository mit dem Stamm-Verzeichnis erstellen mit Dump aus, und legen Sie den Dump mit
svnadmin load --parent-dir trunk
Wenn Sie einen Svn-Umzug machen, dann wird das Dinge vermasseln, wenn Sie jemals eine Revision vor dem Umzug aktualisieren, da die Dateien zurück zu ihrem vorherigen Standort bewegt werden, was wahrscheinlich nicht das ist, was Sie wollen.
Kannst du nicht einfach das Trunk Verzeichnis erstellen und alles von/nach Trunk verschieben?
Wie die anderen Antworten zeigen, wird dies einfach durch einen svn mv in das Stammverzeichnis getan. Um dann Ihre Arbeitskopie zu aktualisieren, sehen Sie sich den Befehl svn switch an.
Dies scheint zu m ake am meisten Sinn, ich wünschte, ich könnte abstimmen^3 +. Ich bin mir nicht sicher, welche Kommandozeilenbefehle unter dem Deckblatt passiert sind, aber mit TortoiseSVN habe ich Repo-Browser verwendet, um ein "trunk" -Verzeichnis zu erstellen und dann die versionierten Inhalte per Drag & Drop in das Stammverzeichnis mit "Move to trunk" zu ziehen . Alle Protokolle wurden beibehalten. Ich habe es versäumt, svn switch zu verwenden, ich habe gerade das .svn-Metadatenverzeichnis gelöscht und neu ausgecheckt, aber ich bin mir sicher, dass svn switch mehr Sinn ergeben hätte. –
Nein, erstellen Sie einfach einen Ordner trunk
und verschieben Sie den gesamten Inhalt des Stammverzeichnisses. Sie können es vom Explorer oder über den Repobrowser ausführen, der Verlauf bleibt erhalten.
Sie müssen /trunk
erstellen und eine svn move aller Inhalte von root innerhalb der Stamm und dann commit.
Danach werden Sie switch
Ihre Arbeitskopie zu /trunk
.
Der einfachste Weg wäre, ein "Trunk" -Verzeichnis zu erstellen, dann verschiebe alles andere hinein. Sie müssen alle Eigenschaften manuell kopieren, aber es sollte keine große Sache sein. Die Geschichte ist pro Datei, also sollte es bleiben.
Das andere Problem ist, ob jemand anderes das Repository geöffnet hat. Es wird schwierig sein, zusammenzuführen, also vergewissern Sie sich, dass alle Ihre Änderungen eingecheckt haben, bevor Sie dies tun.
+1 für die Berücksichtigung von Problemen im Fall einer Zusammenführung – sleske
Es ist der einfachste Weg, aber Sie müssen aufpassen, dass, wenn Sie vor dem Umzug auf eine Revision aktualisieren, unerwartete Dinge passieren (Ihre Arbeitskopie wird sich selbst löschen;)) –
Einverstanden. Es ist etwas komplizierter, 'svnadmin' zu verwenden, aber die Ergebnisse sind besser und die Probleme bei der Zusammenführung sind nicht schlechter als bei der naiven Methode. Ich habe deine Antwort gewählt. –
Ein schnelles Beispiel, wie ich es gemacht habe.
wollte ich file:///svn/myRepo
zu file:///svn/myRepo/trunk
cd/
svnadmin dump /svn/myRepo > my.dump
killall svnserve
sudo rm -r -f /svn/myRepo
svnadmin create /svn/myRepo
svnserve -d -r /svn
svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir"
svnadmin load /svn/myRepo --parent-dir trunk < my.dump
Es gibt einige Gotcha ist oder Beschränkungen mit einigen der diskutierten Ansätze bewegen. Im folgenden Post wird ein anderer Ansatz beschrieben, bei dem das Repo gedumpt und die Dateipfade bearbeitet werden. Dies hat den Vorteil, dass verschobene Dateien auch richtig modifiziert werden.
http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html
therefromhere's answer, Gebrauchtwagen, die gut funktioniert, aber ich wollte die Befehle einschließlich der Parameter hinzuzufügen, das heißtwie auf dem SVN-Server Kommandozeile ausgeführt:
Dump Ihre vorhandenen Repository in eine Datei:
svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
Create ein neues Repository:
svnadmin create /path/to/mynewrepo/
Add der
trunk/
Ordner und commit es, in der Arbeitskopie Verzeichnis:mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
Load die dumpfile in das neue Repository mit
trunk
alsparent-dir
:svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
Es ist leicht in den Anweisungen zu verpassen, aber das sollte auf dem * Server * ausgeführt werden, nicht die Arbeitskopie. Andernfalls erhalten Sie "Datei kann nicht geöffnet werden"/Pfad/zu/Mein Repo/Format ': Keine solche Datei oder Verzeichnis. " – DavGarcia
- 1. Gibt es eine saubere Möglichkeit, Zeichenliterale in Swift anzugeben?
- 2. Gibt es eine saubere Möglichkeit, in reinem CSS Grenzen auf eine <tbody /> zu bekommen?
- 3. Gibt es eine Möglichkeit, sich vor Mercurial-Identitätsdiebstahl zu schützen?
- 4. Gibt es eine saubere Möglichkeit, eine Ein-Zeilen-Hilfe pro Auswahl für Argarse-Entscheidungen zu schreiben?
- 5. Gibt es eine Möglichkeit, sich auf eine Grobcode-Überprüfung vorzubereiten?
- 6. Gibt es eine saubere Möglichkeit, das Ergebnis einer Methode in Groovy zu protokollieren?
- 7. Gibt es eine saubere Möglichkeit, ein Java-Array mit demselben Wert für jedes Element zu deklarieren?
- 8. Gibt es eine saubere Möglichkeit, ORDER BY in einem Arel NamedFunction Node zu verwenden?
- 9. Gibt es eine saubere Möglichkeit, ActiveRecord-Callbacks in Rspec zu testen?
- 10. Gibt es eine saubere Möglichkeit, ein Linienhistogramm in Python zu erstellen?
- 11. Gibt es eine saubere Möglichkeit, Compiler-Warnungen von Cython zu unterdrücken, wenn Sie piximport.install verwenden?
- 12. Gibt es eine saubere Möglichkeit, ein C# -Parameterobjekt [] '-Konstruktorargument in einen C++ - Konstruktor zu konvertieren?
- 13. Gibt es eine saubere Möglichkeit, beim Vergleichen der Liste <String> den Fall zu ignorieren?
- 14. Gibt es eine saubere Möglichkeit, zu verhindern, dass windows.h ein Near & Far-Makro erstellt?
- 15. Wordpress: Gibt es eine Möglichkeit, Stylesheets von Kopf zu Körper zu bewegen?
- 16. Gibt es eine Möglichkeit, AMDPlugin zu deaktivieren?
- 17. Gibt es eine Möglichkeit, django.db.connection.queries zu löschen?
- 18. Gibt es eine Möglichkeit, Fenstereigenschaften zu verbergen?
- 19. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 20. Gibt es eine Möglichkeit, onPanResponderMove zu verwalten?
- 21. Gibt es eine Möglichkeit, PreparedStatement zu aktualisieren?
- 22. Gibt es eine Möglichkeit, Datenbanktransaktionen zu beschleunigen?
- 23. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 24. Gibt es eine Möglichkeit, Kovarianz zu deklarieren?
- 25. Gibt es eine Möglichkeit, Unterabfragen zu vermeiden?
- 26. Gibt es eine Möglichkeit, Webkonsolenfehler zu erkennen?
- 27. Gibt es eine Möglichkeit, dies zu loopen?
- 28. Gibt es eine Möglichkeit, Formularantwort zu ignorieren?
- 29. Gibt es eine Möglichkeit, Typdeklarationen zu erweitern?
- 30. Gibt es eine Möglichkeit, "träge" zu lesen?
-1 Keine Notwendigkeit, zu solchen Längen zu gehen: Bewegen Sie einfach den ganzen Baum. – sleske
@sleske - Ich habe genau dieses Problem zuvor behandelt - siehe meine Notiz über die Probleme, einen svn move zu machen. Dies ist der richtige Weg, es zu tun. –
Ich hatte keine Chance, dies zu versuchen, aber es klingt genau nach der Lösung, nach der ich suche. – Metaphile