1211 Stimmen

Was bedeuten "Branch", "Tag" und "Trunk" in Subversion-Repositories?

Ich habe diese Worte schon oft in Diskussionen über Subversion (und wohl auch allgemein über Repositories) gesehen.
Ich habe mit SVN für meine Projekte verwendet, aber ich habe das Konzept dieser Verzeichnisse nie ganz verstanden.

Was bedeuten sie?

29 Stimmen

Hier ist ein guter Artikel, auf den ich gestoßen bin, der erklärt, wie/wann man Stamm, Zweig und Tags verwendet. Ich hatte vorher noch nie eine Versionsverwaltung benutzt, aber dieser Artikel machte es für einen Anfänger wie mich ziemlich einfach zu verstehen. Alltägliches mit Subversion

8voto

sme Punkte 5613

Tag = ein definierter Zeitabschnitt, in der Regel für Veröffentlichungen verwendet

Ich denke, das ist es, was man normalerweise mit "Tag" meint. Aber in Subversion:

Sie haben eigentlich keine formale Bedeutung. Ein Ordner ist ein Ordner für SVN.

was ich ziemlich verwirrend finde: ein Revisionskontrollsystem, das nichts über Zweige oder Tags weiß. Von der Implementierung her halte ich die Art und Weise, wie Subversion "Kopien" erstellt, für sehr clever, aber dass ich das wissen muss, würde ich als eine _undichte Abstraktion_ .

Vielleicht habe ich aber auch nur die CVS viel zu lange.

6voto

denis phillips Punkte 12174

Ich denke, dass ein Teil der Verwirrung durch den Unterschied zwischen dem Konzept eines Tags und der Implementierung in SVN entsteht. Für SVN ist ein Tag ein Zweig, der eine Kopie ist. Das Ändern von Tags wird als falsch angesehen und in der Tat warnen Werkzeuge wie TortoiseSVN Sie, wenn Sie versuchen, etwas mit ../tags/ im Pfad zu ändern.

5voto

Herms Punkte 35605

Ich bin mir nicht ganz sicher, was ein "Tag" ist, aber ein Zweig ist ein recht gängiges Konzept der Versionsverwaltung.

Im Grunde ist ein Zweig eine Möglichkeit, an Änderungen am Code zu arbeiten, ohne den Stamm zu beeinflussen. Angenommen, Sie wollen eine neue Funktion hinzufügen, die ziemlich kompliziert ist. Sie möchten die Änderungen einchecken können, während Sie sie vornehmen, aber Sie möchten nicht, dass sich das auf den Stamm auswirkt, bis Sie mit der Funktion fertig sind.

Zuerst erstellen Sie einen Zweig. Dies ist im Grunde eine Kopie des Stammes zum Zeitpunkt der Erstellung des Zweigs. Dann führen Sie Ihre gesamte Arbeit in diesem Zweig aus. Alle Änderungen, die in dem Zweig gemacht werden, wirken sich nicht auf den Stamm aus, so dass der Stamm immer noch nutzbar ist und andere dort weiterarbeiten können (z.B. Bugfixes oder kleine Verbesserungen). Sobald Ihre Funktion fertig ist, integrieren Sie den Zweig wieder in den Stamm. Dadurch werden alle Ihre Änderungen aus dem Zweig in den Stamm verschoben.

Es gibt eine Reihe von Mustern, die für Zweige verwendet werden. Wenn Sie ein Produkt mit mehreren Hauptversionen haben, die gleichzeitig unterstützt werden, ist normalerweise jede Version ein Zweig. Bei meiner Arbeit haben wir einen QA-Zweig und einen Produktionszweig. Bevor wir unseren Code für die Qualitätssicherung freigeben, integrieren wir die Änderungen in den QA-Zweig und stellen ihn dann von dort aus bereit. Bei der Freigabe für die Produktion integrieren wir Änderungen aus dem QA-Zweig in den Produktionszweig, damit wir wissen, dass der Code in der Produktion identisch mit dem ist, den QA getestet hat.

Hier ist die Wikipedia-Eintrag über Zweige da sie die Dinge wahrscheinlich besser erklären können als ich :)

4voto

Ujjwal Punkte 2095

Kofferraum : Nach Abschluss eines jeden Sprints in agilem Vorgehen erhalten wir ein teilweise auslieferbares Produkt. Diese Releases werden im Trunk aufbewahrt.

Zweigstellen : Alle parallel entwickelten Codes für jeden laufenden Sprint werden in Zweigen gespeichert.

Tags : Jedes Mal, wenn wir ein teilweise lieferbares Produkt, eine Art Beta-Version, veröffentlichen, erstellen wir einen Tag dafür. Dadurch erhalten wir den Code, der zu diesem Zeitpunkt verfügbar war, und können bei Bedarf während der Entwicklung auf diesen Zustand zurückgreifen.

4voto

Desert Rose Punkte 3296

Für diejenigen, die mit GIT vertraut sind, ist master in GIT gleichbedeutend mit trunk in SVN.

Branch und Tag haben in GIT und SVN die gleiche Terminologie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X