2010-03-16 1 views
5

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?

Antwort

5

Das Tool fs2svn, Teil von svn2svn macht die Grundlagen von dem, was Sie suchen. Beginnen Sie mit this post.

+0

Thank you! Inzwischen bin ich jedoch auf 'git' umgestiegen, was eine solche Aktualisierung erlaubt (' git -A') – Meinersbur

+0

Die svn2svn ist speziell für Windows (das OP fragt nach einem Tool unter Unix). –

1

Sie könnten versuchen, die Methode, die Subverion für die Zusammenführung in Vendor-Code über eine Vendor Branch dann Trunk Merge empfiehlt. Sie haben auch ein Tool, svn_load_dirs.pl, um beim Hinzufügen, Entfernen und Verschieben in der Upstream-Version zu helfen.

Details sind zu finden unter: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html

Verwandte Themen