2008-10-05 7 views
5

Mein normaler Arbeitsablauf zum Erstellen eines neuen Repositorys mit Subversion ist das Erstellen eines neuen Repos, das Auschecken des Repos-Stamms, das Erstellen meiner Branch-Tags und Stammordner und das Platzieren meiner Ausgangsdateien im Stamm . Dann mache ich einen Commit dieses "ersten Imports", lösche die ausgecheckten Repos von meiner Festplatte und mache einen Checkout des Trunks. Dann kann ich anfangen zu arbeiten.Subversion große Repos Import/Checkout

Wenn jedoch mit einem großen Import zu tun, denke Hunderte von Megs, und Off-Site-Versionskontrolle Hosting (http basiert) dieser erste Import kann eine Weile dauern, um zu begehen. Was noch schlimmer ist, nach dem Commit muss ich diesen riesigen Koffer nochmal auschecken.

Gibt es einen Weg mit Subversion, um die lokale Kopie des Trunks zu verwenden, ohne eine Überprüfung von Daten, die bereits dort sind, noch einmal durchzuführen?

Antwort

12

Es ist - es ist ein "in-place-Import" genannt, und es in der Subversion FAQ hier abgedeckt wird:

http://subversion.tigris.org/faq.html#in-place-import

Was Sie wirklich tun ein neues leeres Projekt im Repository zu schaffen Beim Auschecken des leeren Projekts wird Ihr lokaler Ordner - der Ihren Ordner in eine Arbeitskopie verwandelt - und dann alle (vorhandenen) Dateien zu diesem "leeren" Projekt hinzugefügt, sodass sie beim svn-Commit dem Repository hinzugefügt werden.

0

Wenn Sie noch einen einzelnen Ordner ausgecheckt, kopiert die Dateien hinein, laufen svn add und svn commit; Sie sollten die Dateien nicht löschen und nicht erneut auschecken müssen.

Verwenden Sie die Dateien an Ort und Stelle: Sobald sie festgelegt wurden, wie Sie beschreiben, können sie bearbeitet werden.

1

Normalerweise verwende ich "svn mkdir", um die trunk/tags/Zweige direkt nach dem Erstellen des Repository direkt auf dem Server zu erstellen. Dann kann ich den leeren Koffer auschecken, meine anfänglichen Dateien in dieses Verzeichnis verschieben, hinzufügen und committen und mit der Arbeit beginnen.

+0

Persönlich mag ich nicht, dies zu tun, weil es eine Reihe von unnötigen Revisionen in meinem Repository erstellt. Ich ziehe es vor, die Wurzel auszuchecken, die Struktur zu erstellen, die ich brauche, und ein einzelnes Commit der neuen Struktur durchzuführen. – Luke

+0

Luke: Wahrscheinlich wird Ihr Quellcodeverwaltungs-Repository schließlich meistens "unnötige Überarbeitungen" enthalten, also bin ich mir nicht sicher, wie ein zusätzlicher Commit einen Unterschied machen wird. (Sie können alle drei Verzeichnisse gleichzeitig mit "svn mkdir dir1 dir2 dir3 -m was auch immer machen") erstellen. –

3

Ich stimme der "In-Place-Import" -Prozedur zu und auch ein Skript für TTB-Struktur (beide Upvolted).

Nur ein kleiner Hinweis:

Sie sollten keine riesige (zehn Tausend) Anzahl der Dateien in einem einzigen importieren begehen, wenn Sie http (s) verwenden, da die Zeit für die Anzeige der Versionsgeschichte skaliert um die Anzahl der hinzugefügten Einträge. Der Grund für dieses Verhalten ist, dass Apache alle hinzugefügten Pfade gegen die Datei svnaccess authentifizieren muss (natürlich nur, wenn Sie die pfadbasierte Autorisierung aktiviert haben). Dies kann Ihr Repository unbrauchbar machen, da alle Dateien auf einem SVN-Protokoll für diese große rev warten müssen.

sollten Sie riesige Importe teilen auf Verzeichnisebenen

+0

Manchmal erhalten Sie Besitz eines Projekts, das seit einiger Zeit existiert, aber nie unter Versionskontrolle stand. Projekte, die Video-Ressource verwenden, können ziemlich groß werden. – Luke

+0

das ist kein Problem, nur die Anzahl der Dateien zählt, nicht ihre Größe. Und dies gilt nur für Apache, nicht Svn Server selbst –

1

svn checkout --force können Sie einen working ‚über‘ einen vorhandenen Pfad der Kasse. Es behält Ihre alten Dateien und fügt Dateien hinzu, die nur in Ihrem Repository vorhanden sind.

Zum Erstellen Ihres Repository: Sie können mehrere mkdir-Befehle in einem Repository in einem einzigen Commit mit dem Befehl 'svnmucc' ausführen, der in den meisten Subversion-Distributionen verfügbar ist (z. B. SlikSVN).

Geben Sie svnmucc ohne Argumente für einige Hilfe.