2010-02-12 5 views
37

Ich verstehe, dass der Befehl "SVN checkout" das erste Holen der Datei (en) aus dem Subversion - Repository ausführt und sie lokal in Ihr Arbeitsverzeichnis/Kopie bringt und dass der Befehl "SVN - Update" Änderungen an der Datei (s) aus dem Repository, wenn Änderungen von anderen vorgenommen wurden.Subversion - Was sind die Unterschiede zwischen den SVN-Checkout- und SVN-Update-Befehlen?

Es scheint mir jedoch, dass ein "update" nur ein spezieller Fall eines "checkout" ist, das heißt, wenn eine Prüfung stattfindet, erhält es alle Dateien, da noch keine lokal existieren und daher ALLE Dateien haben " geändert ", und dass hinter den Kulissen diese Befehle weitgehend dasselbe tun. Ich nehme an, die Befehle existieren getrennt nur als ein Mittel der Vereinfachung?

Oder gibt es andere Unterschiede zwischen den Befehlen, zum Beispiel, "SVN Update" erhalten Dateien erhalten neue Dateien (Dateien, die im Repository, die Sie nicht in Ihrer Arbeitskopie haben) oder nur Updates vorhanden Dateien?

+1

Ebenfalls verwandt ist der Befehl "svn export". Dies wird Dateien aus einem Repository herunterfahren, aber keine Arbeitskopie erstellen. Sie können keine Änderungen von einem Export festschreiben. –

+0

Es ist nur zum Lesen nur, oder "browse" Typ Zwecke? Wo ist es, einige Temp dir? – Emilio

+1

Nein, es wird eine beschreibbare Kopie sein, die keine versteckten .svn-Verzeichnisse enthält, um Änderungen zu verfolgen. –

Antwort

40

Wie ich es sehe, ist der große Unterschied ist, dass checkoutschafft eine Arbeitskopie, während update nach unten bringt Änderungen an einem bestehenden Arbeitskopie.

+3

IMHO das beantwortet die Frage nicht, weil diese Unterscheidung bereits in der Frage enthalten ist. Es ist ziemlich offensichtlich, dass die beiden Befehle unterschiedliche Semantiken haben, aber wie unterscheiden sie sich * technisch *? Machen sie nicht effektiv dasselbe, nur eines zu Beginn und das andere zu einem späteren Zeitpunkt? –

8

Update aktualisiert Ihre ausgecheckte Version auf die neueste Version (oder eine bestimmte andere Revision) im Repository. Wenn Sie Änderungen an Ihrer Arbeitskopie vorgenommen haben, sind diese nach dem Update weiterhin vorhanden. Wenn Dateien zum Repository hinzugefügt oder gelöscht wurden, wird dies in Ihrer Arbeitskopie widergespiegelt. Wenn Änderungen sowohl in Ihrer lokalen Kopie als auch im Repository auftreten, wird SVN versuchen, alle Änderungen für Sie zusammenzuführen, wenn dies nicht funktioniert, wird ein Konflikt angezeigt, den Sie manuell beheben.

+0

Sie können auf jede Revision aktualisieren, nicht nur auf die neueste. –

+0

Sicher können Sie auf den neuesten Stand bringen. Dies ist die Aufgabe von svn update, wenn Sie HEAD als Revision angeben oder wenn Sie überhaupt keine Revision angeben. –

2

Subversion verwendet versteckte Metadatenverzeichnisse, um die Funktionalität zu aktivieren. Diese .svn-Verzeichnisse machen aus einem Verzeichnis eine Subversion-Arbeitskopie - ohne diese ist es nur ein Verzeichnis und Subversion kann damit nicht viel anfangen.

UPDATE ist eine Operation, die über eine Subversion-Arbeitskopie ausgeführt wird; keine .svn Verzeichnisse, kein UPDATE. KASSE ist der Vorgang, der eine Arbeitskopie erstellt.

9

svn checkout kopiert alle versionierten Dateien aus dem angegebenen Verzeichnis im Repository mit der angegebenen Revision (Standard HEAD) und kopiert sie auf Ihren lokalen Rechner. Es erzeugt auch alle versteckten .svn-Verzeichnisse und die darin enthaltenen Metadaten, die diese Dateien zu einer Arbeitskopie machen.

svn export kopiert alle versionierten Dateien aus dem angegebenen Verzeichnis im Repository mit der angegebenen Revision (Standard HEAD) und kopiert sie auf Ihren lokalen Computer, erzeugt jedoch eine Standardverzeichnishierarchie. (Es tut nicht produzieren eine Arbeitskopie, die aktualisiert oder wieder eingecheckt werden kann).

svn update wendet Änderungen auf eine vorhandene Arbeitskopie an. Wenn dabei ein Konflikt entdeckt wird, wird der Benutzer alarmiert und muss dies beheben, bevor er Änderungen vornehmen kann. Bei der Verwendung von svn commit ist es erforderlich, dass die Arbeitskopie aktuell ist (dh dieselbe Revision wie HEAD).

+0

Ich bin mir nicht sicher, ob die Bedingung, dass die Arbeitskopie vor dem Commit aktualisiert wird, zu 100% korrekt ist. Technisch denke ich, dass Sie/can/committen können, ohne zuerst zu aktualisieren. Ich denke jedoch, es ist/nicht/empfohlen und sollte mit großer Sorgfalt geübt werden. Außerdem weiß ich nicht, wann man ohne vorherige Aktualisierung ein Commit machen möchte. – Dror

1

svn update bringt nur den Unterschied in Dateien von der Benutzerversion auf die neueste verfügbare Version. Wenn kein Unterschied, keine Aktionen.

Aber Checkout erstellt einen neuen Ordner und bringt alle Dateien für diesen Zweig. Checkout ist eine gute Art zu arbeiten, wenn wir die Zweige, an denen wir arbeiten, ständig wechseln.Update ist, wenn wir einen Trunk haben und die Updates von anderen auf diesem Trunk erhalten müssen.

1

während des SVN, den signifikanten Unterschied zwischen der Kasse und zu aktualisieren ist, dass: Sie haben nur einmal die Kasse Befehl verwenden können die Beziehung zwischen einem lokalen Verzeichnis aufzubauen und das Repository (unter Versionskontrolle) und Kopieren Sie alle Dateien aus dem Stamm-Repository in ein lokales Arbeitsverzeichnis. Danach erzeugen die Kopien im lokalen Verzeichnis zu aktualisieren Kasse mit Fehler wie folgt:

svn: E175002: kann nicht in einem Repository ‚https an URL verbinden: // ******* * '.

svn: E175002: Die OPTIONS-Anforderung ungültige XML zurückgegeben in der Antwort: **** „

Der einzige Weg, aktuelle Versionen im lokalen Verzeichnis zu aktualisieren ist das svn update zu verwenden. command.

+0

In welcher SVN Version hast du dieses Verhalten gesehen? Ich habe gerade einen "Re-Checkout" gemacht und es sieht so aus, als ob es nur als Update interpretiert wurde. Ich laufe 'svn, Version 1.8.9 (r1591380)' – jxramos

Verwandte Themen