2010-03-04 13 views
18

Ich habe ein Repo erstellt, und dann lief ich svn import . https://myrepo. Es scheint, alles gut eingecheckt zu haben, und ich kann es auf meiner anderen Maschine überprüfen. Es scheint jedoch nicht den Ordner .svn zu erstellen, so dass ich keine svn ci Befehle zu einem späteren Zeitpunkt ausführen kann.SVN-Import erstellt keine .svn-Ordner?

Das schafft massive Kopfschmerzen zu versuchen und später synchronisieren, weil jetzt alle meine Zeug ist bereits im Repo, aber es widerspricht den Änderungen, die ich versuche zu begehen.

Was mache ich falsch?

+1

Also hängen Sie an, soll ich * es 'importieren', 'cd ..', benennen Sie es um, und überprüfen Sie es dann wieder? Ist das der Standard/erwartete Workflow? – mpen

+0

Wiederholen Sie nach mir: "Das Repository ist keine Arbeitskopie und ich sollte es nicht wie eine behandeln." – Powerlord

+4

@Powerlord: Welches Repository? Wenn Sie importieren, ist das lokale Verzeichnis nicht das Repository, es wird nur als ursprüngliche Version für das Repo importiert. –

Antwort

31

Ich benutze nie importieren, weil es unbequem ist. Importieren erstellt keine .svn-Verzeichnisse, Sie müssen ein zusätzliches Auschecken des neu importierten Verzeichnisses ausführen.

Anstatt Dateien zu importieren, erstelle ich zuerst ein leeres Verzeichnis im Repo und checke es in das Verzeichnis meines vorhandenen Projekts, das ich "importieren" möchte. Dann können Sie einfach commit ausführen und es werden alle Dateien hinzugefügt.

+0

Sie können einen vorhandenen Ordner mit allen darin enthaltenen Projektdateien auschecken und er wird nicht explodieren? – mpen

+0

genau. Sie können ein leeres Verzeichnis aus dem Repository in ein vorhandenes lokales Verzeichnis auschecken, das bereits Dateien enthalten kann. es wird lediglich eine .svn im lokalen Verzeichnis erstellt. Sobald die .svn-Datei existiert, können Sie commit ausführen, um alle vorhandenen Dateien zu übernehmen. – stmax

+2

diese Methode hat einen weiteren Vorteil, den ich mag es - vor dem Festschreiben können Sie bereits definieren Sie Ihre Svn: ignoriert bestimmte Dateien auszuschließen. Ich benutze das sehr oft. Ich denke, das kann man nicht mit dem Import machen, der Import importiert immer alles, was es gibt (Binärdateien sind enthalten), so dass du dein Verzeichnis immer vor dem Import aufräumen musst und du musst die svn: ignores nach dem Checkout setzen und begehe wieder. – stmax

1

Wenn Sie ein Projekt mit Subversion einrichten, sollten Sie nach dem ersten Import Ihres Projekts das Projekt überprüfen und die Arbeit am Projekt in der Kopie fortsetzen, die Sie ausgecheckt haben. Ich denke, das Problem ist, dass Sie weiter an der Kopie gearbeitet haben, die Sie eingecheckt haben.

+1

So scheint es. Aber das erklärt nicht, warum * 'import' nicht den' .svn'-Ordner erstellen würde ... ist es nicht logisch, dass Sie Ihren Import auf dem neuesten Stand halten wollen? – mpen

+0

Das ist eine gute Frage, die ich selbst nicht beantworten kann. Vielleicht möchten die Leute nicht immer, dass die importierten Verzeichnisse zu einer "Arbeitskopie" werden, obwohl es immer noch schön wäre, diese Option zu haben. Ich muss sagen, dass ich nie wirklich darüber nachgedacht habe. – rvdginste

+0

Das Handbuch erwähnt explizit, dass ein Import den ursprünglichen Verzeichnisbaum in einer Arbeitskopie nicht konvertiert. Keine Erklärung für das Warum. http://svnbook.red-bean.com/en/1.4/svn.tour.importing.html – rvdginste

6

Nur eine Arbeitskopie wird einen .svn-Ordner haben. Import erstellt keine Arbeitskopie. (Warum nicht? Nehmen wir an, Sie haben beispielsweise versucht, von Medien zu importieren, auf denen Sie keine Schreibberechtigungen haben. In diesem Fall würde es beim Import fehlschlagen, eine Arbeitskopie zu erstellen). Um eine Arbeitskopie zu erstellen, müssen Sie Kasse verwenden.

Mit anderen Worten: Importiert Informationen in das Repository. Das ist alles, was es tun soll, es hat keinen Einfluss auf die Originaldateien. Die meisten Subversion-Befehle funktionieren nur in einer Richtung: Auschecken, Exportieren und Aktualisieren ändern Dateien auf dem lokalen System/der Arbeitskopie. Import und Commit aktualisieren nur das Repository. Abgesehen von [un] lock-Operationen kann ich mir keinen Befehl vorstellen, der gleichzeitig sowohl das Repository als auch die Arbeitskopie betrifft.

1

Nach dem Import können Sie svn checkout --force ausführen, um das importierte Verzeichnis in eine Arbeitskopie zu konvertieren.

+0

Das Problem ist, es scheint eine ganze Menge von Berechtigungen auf Linux zu ändern. Normalerweise importiere ich das Verzeichnis/etc auf meinen Servern und stelle fest, dass ich eine ganze Menge an Berechtigungen nach dem --force-Checkout beheben muss. –

0

GAHHHHHHHHH ... NICHT TORTOISE-SVN, um dies zu tun - es wird Ihr lokales Verzeichnis löschen.
Sooo ......... machen Sie eine Zip/Kopie woanders zuerst! .. seufz ... (zumindest hatte ich eine vorherige - alte - zipfile).

+1

Ich glaube, Sie wissen nicht, wie funktioniert Svn funktioniert. – Cheung

2

Ich wollte ein Update zur Verwendung von TortoiseSVN nach einem Import bereitstellen. Mit TortoiseSVN können Sie jetzt in einen nicht leeren Ordner auschecken.

Daher können Sie einfach in den gleichen Ordner auschecken, den Sie für den Import verwendet haben. TortoiseSVN versioniert alle darin enthaltenen Dateien, stellt fest, dass sie alle übereinstimmen, und lädt/überschreibt nichts. Sie müssen den Quellordner nicht mehr umbenennen und dann in einen neuen leeren Ordner auschecken.

Dies wurde unter Windows   7 mit TortoiseSVN Version 1.8.0, Build 24401 - 64 Bit, 2013-06-17T18: 15: 59 (Subversion 1.8.0, -Freigabe) getestet.

Beispiel:

Ordner C: \ myfiles hat die Daten.

  1. Import, die http://example.com/svn/myfiles

  2. Check-out http://example.com/svn/myfiles in C an in SVN Ordner: \ myfiles.

  3. TortoiseSVN warnt, dass das Ziel nicht leer ist, klicken Sie auf OK.

TortoiseSVN legt dann C: \ myfiles und sein Inhalt (die derzeit das Repository übereinstimmen) unter Versionskontrolle, ohne ändern zu müssen/download/ersetzen Sie alle Dateien.

+0

Leider scheint die Verifizierung der Datei genauso lang zu dauern, wie ein tatsächlicher Checkout :(Ich denke, ich werde 'svn co -force' versuchen, wie von [Michael Hackner] vorgeschlagen (http://stackoverflow.com/) Benutzer/189919/michael-hackner), beim nächsten Mal und sehen, wie das ausgeht. –

0

Ordnerberechtigungen prüfen. In meinem Fall hat es funktioniert.