2010-03-07 14 views
6

Mit Subversion, in meiner Arbeitskopie, mache ich eine kleine Änderung (Update eine Versionsnummer). Ich möchte dann meine Arbeitskopie markieren. Wäre dieses Tag noch eine billige Kopie mit der Änderung, oder würde SVN die Dateien duplizieren? Ich würde es hassen zu sehen, dass mein Repository enorm an Größe zunimmt, weil ich versuche, eine Änderung der Versionsnummer zu speichern.SVN - Wenn Sie eine Arbeitskopie markieren, ist es immer noch eine billige Kopie?

Der Grund, warum ich nach dem Erstellen eines Tags frage, das eine Änderung enthält und nicht das Commit und dann das Tagging, betrifft meinen Buildserver. Der Build-Server erstellt ein CCNetLabel, mit dem ich die Versionsnummern meiner Projekte (AssemblyInfo.cs) aktualisiere. Wenn der Build erfolgreich ist, wird ein Tag erstellt. Wenn ich ForceBuild verwende, basiert das Tag auf der Arbeitskopie, die die geänderte Versionsnummer enthalten würde. Ich möchte, dass das Tag die entsprechende Versionsnummer enthält.

Hinweis: Es ist strittig, wenn ich eine Verzweigung oder ein Tag erstellen, SVN unterscheidet jedoch nicht zwischen den beiden.

Antwort

4

Es kommt darauf an. Wenn Ihre Arbeitskopie auf dem neuesten Stand ist (alle Knoten haben die gleiche Revision), ist sie genauso billig wie die Markierung aus dem Repository.

Für jede Datei/jedes Verzeichnis (oder Teilbaum) mit einer anderen Revision als die übergeordneten Daten werden zusätzliche Daten hinzugefügt. Und wenn Sie lokale Änderungen haben, werden noch mehr Daten hinzugefügt.

Aber es ist immer noch günstig: Es kopiert keine Dateien, die bereits im Repository sind.

+0

Excellent, meine Sorge war, dass es alle Dateien kopieren kann. Es klingt, als wäre das Markieren der Arbeitskopie kaum größer als das Markieren eines Zweigs auf dem Server. Nun, wenn ich Cruise Control .net sagen könnte, um immer meine Arbeitskopie zu markieren .... http://groups.google.com/group/ccnet-devel/browse_thread/thread/13e5cc63cb9221ae – mcdon

+0

wenn ich ein Verzeichnis "A" habe meine Arbeitskopie und ich kennzeichne das. Ich verstehe, dass dies eine billige Kopie im Repository sein wird. Später lösche ich jedoch "A" aus meinem Arbeitsverzeichnis. Was wird mit der billigen Kopie passieren? Wird es noch "A" geben? – Jus12

1

Erstellen eines Tags oder einer Verzweigung in Subversion ist sehr billig. Die Dateien werden nicht kopiert. Alles was passiert, ist, dass eine neue Revision erstellt wird, deren Inhalt im Grunde nur einen Zeiger enthält, aus dem das Tag kopiert wurde. Dies ist die gleiche Größe für einen Tag eines Projekts mit einer kleinen Datei oder für einen mit einer Million großen.

Wenn Sie sagen "Tag meine Arbeitskopie", meinst du "tag meine Arbeitszweig"? Sie können nur Daten kennzeichnen, die bereits in das Repository übertragen wurden, nicht jedoch Ihre lokalen nicht festgeschriebenen Änderungen.

+0

Spar meine ich meine Arbeitskopie etikettieren. Der Prozess wird sein: svn update, Versionsnummer in Arbeitskopie aktualisieren, Tag aus Arbeitskopie generieren. Das Ziel ist das Speichern der aktualisierten Versionsinformationen im Tag (Zweig plus eine Änderung für die Versionsnummer). – mcdon

5

Von der Subversion Beschreibung

  • Branching und Tagging sind billig (konstante Zeit) Operationen. Es gibt keinen Grund für diese Operationen, um teuer zu sein, also sind sie nicht. Verzweigungen und Tags werden beide im Hinblick auf eine zugrunde liegende "Kopier" -Operation implementiert. Eine Kopie nimmt einen kleinen, konstanten Platz ein. Jede Kopie ist ein Tag; und wenn Sie anfangen, auf einer Kopie zu begehen, dann ist es auch ein Zweig. (Dies funktioniert mit CVS „Zweig-Punkt-Tagging“ entfernt, durch die Unterscheidung zu entfernen, die Zweig-Punkt-Tags notwendig gemacht in erster Linie.)

Hinweis! Ich habe gerade festgestellt, dass Subversion in die Apache-Projektorganisation verschoben wurde

1

Ziemlich veraltete Post, aber erwähnenswert für jeden Besucher die Antwort mit der Aussage Sie können nur "Sie können nur Daten, die bereits in das Repository begangen wurde taggen ..." engagierte Arbeit ist nicht ganz genau (zumindest nicht jetzt).

Sie können eine Arbeitskopie markieren, die gemischte Revisionen und sogar geswitchte Verzeichnisse sowie lokale Änderungen enthalten kann.

Was Billigkeit, ja, es sollte immer noch billig wie Subversion für Sie verzweigen, dann Ihre Arbeitskopie Änderungen in den Repo-Overlay, so viel Platz wie möglich