Ich habe ein 3rd-Party-Projekt in mein eigenes svn-Repository geschrieben. Jetzt habe ich eine neue Version dieses Projekts und möchte es in meinem Repository ersetzen.Merge die unversionierte Verzeichnisstruktur in das SVN-Repository
Das Projekt ist ziemlich groß (1,2 GB) und die neue Version hat neue Dateien/Verzeichnisse und auch gelöschte Dateien/Verzeichnisse.
Die triviale Lösung ist
svn rm project
mv /path/to/new/project .
svn add project
svn ci
Allerdings verliere ich die Geschichte für alles. Außerdem kann der Svn-Server keine Delta-Komprimierung verwenden (Ja, Serverplatz spielt eine Rolle).
Eine andere Möglichkeit besteht darin, alle Dateien im Arbeitsverzeichnis zu überschreiben und dann zu committen. Die gelöschten Dateien verbleiben jedoch im Repository. svn add --force *
hat auch "vergessen", einige Dateien hinzuzufügen.
Was sind die anderen Möglichkeiten, die neue Version zu committen? Ist das ein ungewöhnlicher Anwendungsfall, so dass es keine integrierte Unterstützung dafür gibt? (mit Tortoise SVN Ich würde Kampf mit den .svn
Ordner bietet Tortoise fehlenden Dateien/Ordner im Übertragen-Dialog zu löschen, aber die Kommandozeilenversion weigert zu begehen, wenn sie Dateien/Ordner nicht gelöscht mit svn rm
trifft)
Extra 1: Wie kann ich vermeiden, dass Änderungen in meinem Repository überschrieben werden? (Es gibt nur wenige, so erneut die Anwendung akzeptabel ist im Moment)
Extra 2: ich alle Symlinks mit Kopien des Ziel ersetzt (Um von special status changed
Fehler loszuwerden). Wie vermeide ich das?
Extra 3: Wie man mit umbenannten Dateien/Verzeichnissen zurechtkommt? Da ich nur die neue Version ohne Änderungshistorie bekomme, ist es unmöglich, diese automatisch zu bestimmen. svn mv
vor dem Festschreiben?
Thank you! Inzwischen bin ich jedoch auf 'git' umgestiegen, was eine solche Aktualisierung erlaubt (' git -A') – Meinersbur
Die svn2svn ist speziell für Windows (das OP fragt nach einem Tool unter Unix). –