Was bedeuten “Zweig”, “Tag” und “Stamm” in Subversion-Repositories?

Ich habe diese Wörter viel über Subversion (und ich vermute allgemeine Repository) Diskussionen gesehen. Ich habe SVN in den letzten Jahren für meine Projekte verwendet, aber ich habe nie das komplette Konzept dieser Verzeichnisse verstanden.

Was meinen sie?

   

Hmm, ich bin mir nicht sicher, ob ich der Meinung bin, dass Nick re tag einer Filiale ähnlich ist. Ein Tag ist nur ein Marker

  • Trunk wäre der Hauptteil der Entwicklung, die vom Beginn des Projekts bis heute entstanden ist.

  • Branch wird eine Kopie von Code sein, der von einem bestimmten Punkt in der Verbindungsleitung abgeleitet wird, der verwendet wird, um größere Änderungen an dem Code vorzunehmen, während die Integrität des Codes in der Verbindungsleitung bewahrt wird. Wenn die größeren Änderungen nach Plan funktionieren, werden sie normalerweise wieder in den Stamm zusammengeführt.

  • Tag wird ein Zeitpunkt auf dem Stamm oder einem Zweig sein, den Sie beibehalten möchten. Die beiden Hauptgründe für die Erhaltung wären, dass es sich entweder um eine Hauptversion der Software handelt, egal ob Alpha, Beta, RC oder RTM, oder dass dies der stabilste Punkt der Software ist, bevor größere Revisionen am Stamm vorgenommen wurden.

In Open-Source-Projekten können wichtige Zweige, die von den Projekt-Stakeholdern nicht in den Stamm aufgenommen werden, die Grundlage für Gabeln bilden – z. B. völlig getrennte Projekte, die einen gemeinsamen Ursprung mit anderem Quellcode haben.

Zuallererst, wie @AndrewFinnell und @KenLiu darauf hinweisen, bedeuten in SVN die Verzeichnisnamen selbst nichts – “Stamm, Zweige und Tags” sind einfach eine übliche Konvention, die von den meisten Repositories verwendet wird. Nicht alle Projekte verwenden alle Verzeichnisse (es ist durchaus üblich, überhaupt keine “Tags” zu verwenden), und tatsächlich hält Sie nichts davon ab, sie als etwas zu bezeichnen, das Sie gerne hätten, obwohl das Brechen von Konventionen oft verwirrend ist.

Ich werde das wahrscheinlich gebräuchlichste Anwendungsszenario von Zweigen und Tags beschreiben und ein Beispielszenario ihrer Verwendung geben.

  • Stamm : Das Hauptentwicklungsgebiet. Dies ist, wo Ihre nächste Hauptversion des Codes lebt, und im Allgemeinen über die neuesten functionen verfügt.

  • Zweige : Jedes Mal, wenn Sie eine Hauptversion freigeben, wird eine Verzweigung erstellt. Auf diese Weise können Sie Fehlerbehebungen vornehmen und eine neue Version erstellen, ohne die neuesten – möglicherweise noch nicht abgeschlossenen oder nicht getesteten – functionen freigeben zu müssen.

  • Tags : Jedes Mal, wenn Sie eine Version veröffentlichen (Final Release, Release-Kandidaten (RC) und Betas), machen Sie ein Tag dafür. Dadurch erhalten Sie eine Point-in-Time-Kopie des Codes, so wie er in diesem Zustand war. So können Sie zurückgehen und bei Bedarf alle Fehler in einer früheren Version reproduzieren oder eine frühere Version genau so wieder freigeben, wie sie war. Zweige und Tags in SVN sind leichtgewichtig – auf dem Server werden keine vollständigen Kopien der Dateien erstellt, sondern nur ein Marker, der besagt, dass diese Dateien bei dieser Revision kopiert wurden und nur ein paar Bytes benötigen. In diesem Sinne sollten Sie sich nie darum kümmern, ein Tag für einen freigegebenen Code zu erstellen. Wie ich bereits sagte, werden Tags häufig weggelassen und stattdessen wird durch ein Änderungsprotokoll oder ein anderes Dokument die Versionsnummer klargestellt, wenn eine Freigabe erfolgt.


Angenommen, Sie starten ein neues Projekt. Sie beginnen in “trunk” zu arbeiten, was dann als Version 1.0 veröffentlicht wird.

  • Stamm / – Entwicklungsversion, bald 1.0 zu sein
  • Zweige / – leer

Sobald 1.0.0 beendet ist, verzweigen Sie den Stamm in einen neuen Zweig “1.0” und erstellen ein “1.0.0” -Tag. Arbeite nun daran, was im Stamm 1.1 schließlich weitergeht.

  • Stamm / – Entwicklungsversion, bald 1.1
  • Filialen / 1.0 – 1.0.0 Release-Version
  • Tags / 1.0.0 – 1.0.0 Release-Version

Sie stoßen auf einige Fehler im Code und beheben sie im Stamm, und führen Sie dann die Fixes über den Zweig 1.0 zusammen. Sie können auch das Gegenteil tun und die Fehler in der 1.0-Verzweigung beheben und sie dann wieder mit dem Stamm zusammenführen, aber im Allgemeinen bleiben Projekte dabei, nur in eine Richtung zu merge, um die Chance zu verringern, etwas zu verpassen. Manchmal kann ein Fehler nur in 1.0 behoben werden, da er in 1.1 veraltet ist. Es ist nicht wirklich wichtig: Sie wollen nur sicherstellen, dass Sie 1.1 nicht mit den gleichen Bugs veröffentlichen, die in 1.0 behoben wurden.

  • Stamm / – Entwicklungsversion, bald 1.1
  • Zweigniederlassungen / 1.0 – kommende Version 1.0.1
  • Tags / 1.0.0 – 1.0.0 Release-Version

Sobald Sie genug Bugs gefunden haben (oder vielleicht einen kritischen Bug), entscheiden Sie sich für eine 1.0.1 Veröffentlichung. Sie erstellen also einen Tag “1.0.1” aus dem Zweig 1.0 und geben den Code frei. An diesem Punkt enthält trunk was 1.1 sein wird, und der “1.0” Zweig enthält 1.0.1 Code. Wenn Sie das nächste Mal ein Update auf 1.0 veröffentlichen, wäre es 1.0.2.

  • Stamm / – Entwicklungsversion, bald 1.1
  • Branches / 1.0 – kommende Version 1.0.2
  • Tags / 1.0.0 – 1.0.0 Release-Version
  • Tags / 1.0.1 – 1.0.1 Release-Version

Schließlich bist du fast bereit, 1.1 zu veröffentlichen, aber du möchtest zuerst eine Beta machen. In diesem Fall erstellen Sie wahrscheinlich einen Zweig “1.1” und einen Tag “1.1beta1”. Arbeiten Sie jetzt an der Stelle, an der 1.2 (oder vielleicht 2.0) sein wird, in der Amtsleitung, aber die Arbeit an 1.1 wird im Zweig “1.1” fortgesetzt.

  • Stamm / – Entwicklungsversion, soll bald 1.2 sein
  • Branches / 1.0 – kommende Version 1.0.2
  • Zweigniederlassungen / 1.1 – kommende Version 1.1.0
  • Tags / 1.0.0 – 1.0.0 Release-Version
  • Tags / 1.0.1 – 1.0.1 Release-Version
  • Tags / 1.1 Beta1 – 1.1 Beta 1 Release-Version

Sobald Sie 1.1 final veröffentlichen, machen Sie ein “1.1” -Tag aus dem Zweig “1.1”.

Sie können 1.0 auch beibehalten, wenn Sie Bugfixes zwischen allen drei Zweigen (1.0, 1.1 und Trunk) portieren möchten. Wichtig ist, dass Sie für jede Hauptversion der Software, die Sie verwalten, über eine Verzweigung verfügen, die die neueste Version des Codes für diese Version enthält.


Eine andere Verwendung von Verzweigungen ist für Merkmale. Hier verzweigen Sie den Zweig (oder eine Ihrer Zweigstellen) und arbeiten isoliert an einer neuen function. Sobald die function abgeschlossen ist, fügen Sie sie wieder zusammen und entfernen die Verzweigung.

  • Stamm / – Entwicklungsversion, soll bald 1.2 sein
  • Zweigniederlassungen / 1.1 – kommende Version 1.1.0
  • Zweige / UI-Rewrite – experimenteller Feature-Zweig

Die Idee davon ist, wenn man an etwas Störendem arbeitet (das andere Leute davon abhalten würde, ihre Arbeit zu machen), etwas Experimentelles (das vielleicht nicht einmal eingeht) oder möglicherweise nur etwas, das eine lange Zeit in Anspruch nimmt (und Sie haben Angst, wenn es eine 1.2-Version halten, wenn Sie bereit sind, 1.2 aus dem Stamm zu verzweigen), können Sie es isoliert in Zweig tun. Im Allgemeinen halten Sie es mit dem Trunk auf dem neuesten Stand, indem Sie die Änderungen ständig integrieren, wodurch es einfacher wird, sich wieder zu integrieren (wieder mit dem Trunk zu verbinden), wenn Sie fertig sind.


Beachten Sie auch, dass das Versionierungsschema, das ich hier verwendet habe, nur eines von vielen ist. Einige Teams würden Bug Fix / Maintenance Releases wie 1.1, 1.2, etc., und große Änderungen wie 1.x, 2.x, etc. machen. Die Verwendung hier ist die gleiche, aber Sie können den Zweig “1” oder “1 .x “statt” 1.0 “oder” 1.0.x “. (Nebenbei, semantische Versionierung ist eine gute Anleitung für Versionsnummern).

Zusätzlich zu dem, was Nick gesagt hat, können Sie mehr über Streamed Lines erfahren: Verzweigungsmuster für parallele Softwareentwicklung

Bildbeschreibung hier eingeben

In dieser Figur ist main der Stamm, rel1-maint ist ein Zweig und 1.0 ist ein Tag.

Im Allgemeinen (Tool Agnostic View) ist eine Verzweigung der Mechanismus für die parallele Entwicklung. Ein SCM kann 0 bis n Zweige haben. Subversion hat 0.

  • Trunk ist ein von Subversion empfohlener Hauptzweig, aber Sie sind in keiner Weise gezwungen, ihn zu erstellen. Man könnte es “Main” oder “Releases” nennen, oder gar keines!

  • Branch ist eine Entwicklungsleistung. Es sollte niemals nach einer Ressource (wie ‘vonc_branch’) benannt werden, sondern nach:

    • ein Zweck ‘myProject_dev’ oder ‘myProject_Merge’
    • ein Freigabeumfang ‘myProjetc1.0_dev’oder myProject2.3_Merge’ oder ‘myProject6..2_Patch1’ …
  • Tag ist ein Schnappschuss von Dateien, um leicht zu diesem Zustand zurückzukehren. Das Problem ist, dass Tag und Zweig in Subversion gleich sind . Und ich würde auf jeden Fall den paranoiden Ansatz empfehlen:

    Sie können eines der Skripts für die Zugriffssteuerung verwenden, die mit Subversion bereitgestellt werden, um zu verhindern, dass jemand etwas anderes tut, als neue Kopien im Bereich Tags zu erstellen.

Ein Tag ist endgültig. Sein Inhalt sollte sich niemals ändern. NOCH NIE. Je. Sie haben eine Zeile in der Release Note vergessen? Erstellen Sie ein neues Tag. Veraltet oder entferne das alte.

Jetzt lese ich viel darüber, “das und jenes in solchen und jenen Zweigen zusammenzufliessen, dann endlich im Stammzweig”. Dies wird Merge-Workflow genannt und hier ist nichts zwingend erforderlich . Es ist nicht, weil Sie einen Stammzweig haben, dass Sie nichts zusammenführen müssen.

Per Konvention kann der Stammzweig den aktuellen Stand Ihrer Entwicklung darstellen, aber das ist für ein einfaches sequenzielles Projekt, das ist ein Projekt, das

  • keine “im Voraus” -Entwicklung (für die Vorbereitung der nächsten Version, die solche Änderungen impliziert, dass sie nicht mit der aktuellen “Stamm” -Entwicklung kompatibel sind)
  • kein massives Refactoring (zum Testen einer neuen technischen Entscheidung)
  • keine langfristige Wartung einer früheren Version

Denn mit einem (oder allen) dieser Szenarios erhalten Sie vier “Trunks”, vier “aktuelle Entwicklungen”, und nicht alles, was Sie in dieser parallelen Entwicklung tun, muss notwendigerweise wieder in “Trunk” zusammengeführt werden.

In SVN sind ein Tag und ein Zweig sehr ähnlich.

Tag = ein definiertes Zeitfenster, das normalerweise für Releases verwendet wird

Branch = Auch ein definierter Zeitabschnitt, in dem die Entwicklung fortgesetzt werden kann, normalerweise für Hauptversionen wie 1.0, 1.5, 2.0 usw. verwendet. Wenn Sie die Veröffentlichung freigeben, markieren Sie den Zweig. Auf diese Weise können Sie weiterhin eine Produktionsversion unterstützen und gleichzeitig Änderungen im Stamm vornehmen

Trunk = Entwicklungsarbeitsraum, hier sollte die gesamte Entwicklung stattfinden und dann werden die Änderungen von den Zweigfreigaben wieder zusammengeführt.

Sie haben eigentlich keine formale Bedeutung. Ein Ordner ist ein Ordner für SVN. Sie sind eine allgemein akzeptierte Möglichkeit, Ihr Projekt zu organisieren.

  • Im Kofferraum behalten Sie Ihre Hauptentwicklungslinie. Der Branch-Ordner ist der Ort, an dem Sie möglicherweise Zweige erstellen, die in einem kurzen Post schwer zu erklären sind.

  • Eine Verzweigung ist eine Kopie einer Teilmenge Ihres Projekts, an der Sie getrennt vom Stamm arbeiten. Vielleicht ist es für Experimente, die nirgendwohin gehen, oder vielleicht ist es für die nächste Version, die Sie später wieder in den Stamm zusammenführen werden, wenn es stabil wird.

  • Und der Tag-Ordner dient zum Erstellen von getaggten Kopien Ihres Repositories, normalerweise an Release-Checkpoints.

Aber wie ich schon sagte, zu SVN ist ein Ordner ein Ordner. branch , trunk und Tag sind nur eine Konvention.

Ich benutze das Wort “kopiere” großzügig. SVN erstellt keine vollständigen Kopien der Objekte im Repository.

Der Stamm ist die Entwicklungslinie, die den neuesten Quellcode und die neuesten functionen enthält. Es sollte die neuesten Fehlerkorrekturen enthalten sowie die neuesten functionen, die dem Projekt hinzugefügt wurden.

Die Zweige werden normalerweise verwendet, um etwas außerhalb des Rumpfes (oder einer anderen Entwicklungslinie) zu tun, das sonst den Build zerstören würde. Neue Features werden oft in einem Zweig erstellt und dann wieder in den Stamm eingebunden. Branchen enthalten oft Code, der für die Entwicklungslinie, von der er sich abzweigt, nicht unbedingt genehmigt ist. Zum Beispiel könnte ein Programmierer eine Optimierung für etwas in einer Verzweigung versuchen und erst dann wieder in die Entwicklungslinie einfließen, wenn die Optimierung zufriedenstellend ist.

Die Tags sind Momentaufnahmen des Repositorys zu einem bestimmten Zeitpunkt. Auf diesen sollte keine Entwicklung stattfinden. Sie werden am häufigsten verwendet, um eine Kopie von dem zu erhalten, was an einen Client freigegeben wurde, damit Sie leicht auf das zugreifen können, was ein Client verwendet.

Hier ist ein Link zu einem sehr guten Leitfaden zu Repositories:

  • Quellcode-HOWTO

Die Artikel in Wikipedia sind ebenfalls lesenswert.

Nun, das ist die Sache der Software-Entwicklung, es gibt kein konsistentes Wissen über irgendetwas, jeder scheint es auf seine eigene Weise zu haben, aber das liegt daran, dass es sowieso eine relativ junge Disziplin ist.

Hier ist mein einfacher Weg,

trunk – Das Trunk-Verzeichnis enthält den aktuellsten, genehmigten und zusammengeführten Arbeitsbereich. Im Gegensatz zu dem, was viele gestanden haben, ist mein Koffer nur für sauberes, ordentliches, genehmigtes Arbeiten und kein Entwicklungsgebiet, sondern eher ein Freisetzungsgebiet.

Zu einem bestimmten Zeitpunkt, an dem der Kofferraum bereit zu sein scheint, wird er markiert und freigegeben.

Zweige – Das Zweigverzeichnis enthält Experimente und laufende Arbeiten. Arbeiten unter einer Filiale bleiben dort, bis sie in den Kofferraum einmünden. Für mich ist dies der Bereich, in dem alle Arbeit geleistet wird.

Zum Beispiel: Ich kann einen Iterations-5- Zweig für eine fünfte Entwicklungsrunde auf dem Produkt haben, vielleicht einen Prototyp-9- Zweig für eine neunte Experimentierrunde, und so weiter.

tags – Das Tag-Verzeichnis enthält Snapshots von genehmigten Zweigen und Stammfreigaben. Wenn eine Zweigstelle für die Zusammenführung in den Stamm freigegeben wird oder eine Freigabe vom Stamm erfolgt, wird unter Tags eine Momentaufnahme der genehmigten Zweig- oder Stammfreigabe erstellt.

Ich nehme an, mit Tags kann ich ziemlich schnell auf Punkte hin und her springen.

Das Stammverzeichnis ist das Verzeichnis, mit dem Sie wahrscheinlich vertraut sind, da es die letzten Änderungen enthält. Ihre Hauptcodebasis sollte im Kofferraum sein.

Das Zweigverzeichnis dient dazu, Ihre Zweige zu halten, was auch immer sie sein mögen.

Das Tag-Verzeichnis dient hauptsächlich zum Markieren bestimmter Dateien. Sie tun dies für Dinge wie Releases, wo “1.0” diese Dateien bei diesen Revisionen sein sollen und “1.1” diese Dateien bei diesen Revisionen sein sollen. Normalerweise werden Tags nach ihrer Erstellung nicht geändert. Weitere Informationen zu Tags finden Sie in Kapitel 4. Verzweigen und Zusammenführen (in Versionskontrolle mit Subversion ).

Einer der Gründe, warum jeder eine etwas andere Definition hat, ist, dass Subversion keine Unterstützung für Zweige und Tags implementiert. Subversion sagt im Grunde: Wir haben Zweige und Tags mit vollem functionsumfang in anderen Systemen betrachtet und fanden sie nicht nützlich, also haben wir nichts implementiert. Erstellen Sie stattdessen eine Kopie in ein neues Verzeichnis mit einer Namenskonvention. Dann kann natürlich jeder etwas andere Konventionen haben. Um den Unterschied zwischen einem echten Tag und einer reinen Kopier + -Namenskonvention zu verstehen, siehe den Wikipedia-Eintrag Subversion tags & branches .

Ich fand dieses großartige Tutorial in Bezug auf SVN, als ich auf der Website des Autors des OpenCV 2 Computer Vision Anwendung Programming Cookbook nachsuchte und ich dachte, ich sollte teilen.

Er hat ein Tutorial, wie man SVN benutzt und was die Begriffe ‘trunk’, ‘tag’ und ‘branch’ bedeuten.

Zitiert direkt von seinem Tutorial:

Die aktuelle Version Ihres Softwareprojekts, an dem Ihr Team gerade arbeitet, befindet sich normalerweise in einem Verzeichnis namens trunk . Während das Projekt weiterentwickelt wird, aktualisiert der Entwickler diese Version, korrigiert Fehler, fügt neue functionen hinzu und sendet seine Änderungen unter diesem Verzeichnis.

Zu jedem beliebigen Zeitpunkt möchten Sie möglicherweise eine Version einfrieren und einen Snapshot der Software erfassen, wie es zu diesem Zeitpunkt der Entwicklung der Fall ist. Dies entspricht im Allgemeinen den offiziellen Versionen Ihrer Software, z. B. denjenigen, die Sie an Ihre Kunden liefern. Diese Snapshots befinden sich unter dem Tag- Verzeichnis Ihres Projekts.

Schließlich ist es oft sinnvoll, irgendwann einmal eine neue Entwicklungslinie für Ihre Software zu erstellen. Dies ist beispielsweise der Fall, wenn Sie eine alternative Implementierung testen möchten, bei der Sie Ihre Software ändern müssen, diese Änderungen jedoch erst dann an das Hauptprojekt übertragen möchten, wenn Sie sich für die neue Lösung entscheiden. Das Hauptteam kann dann weiter an dem Projekt arbeiten, während andere Entwickler an dem Prototyp arbeiten. Sie würden diese neuen Entwicklungslinien des Projekts in ein Verzeichnis mit dem Namen ” Filialen” setzen .

Tag = ein definiertes Zeitfenster, das normalerweise für Releases verwendet wird

Ich denke, das ist was man typischerweise mit “tag” meint. Aber in Subversion:

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

was ich eher verwirrend finde: ein Revisionskontrollsystem, das nichts über Verzweigungen oder Tags weiß. Aus der Sicht der Implementierung denke ich, dass die Art und Weise, wie “Kopien” von Subversion erstellt werden, sehr schlau ist, aber ich muss darüber etwas wissen, was ich eine undichte Abstraktion nennen würde.

Oder vielleicht habe ich CVS einfach viel zu lange benutzt.

Ich denke, dass ein Teil der Verwirrung von dem Unterschied zwischen dem Konzept eines Tags und der Implementierung in SVN herrührt. Zu SVN ist ein Tag eine Verzweigung, die eine Kopie ist. Das Ändern von Tags wird als falsch angesehen und in der Tat werden Sie von Tools wie TortoiseSVN gewarnt, wenn Sie versuchen, etwas mit ../tags/ .. im Pfad zu ändern.

Ich bin nicht wirklich sicher, was “Tag” ist, aber Branch ist ein ziemlich verbreitetes Source-Control-Konzept.

Im Grunde ist eine Verzweigung eine Möglichkeit, Änderungen am Code vorzunehmen, ohne die Verbindung zu beeinträchtigen. Angenommen, Sie möchten ein neues Feature hinzufügen, das ziemlich kompliziert ist. Sie möchten Änderungen so einchecken können, wie Sie sie vorgenommen haben, möchten aber nicht, dass sie sich auf die Leitung auswirken, bis Sie mit der function fertig sind.

Zuerst würden Sie einen Zweig erstellen. Dies ist im Grunde eine Kopie von Stamm als der Zeit, die Sie den Zweig gemacht haben. Sie würden dann alle Ihre Arbeit in der Branche machen. Alle Änderungen, die in der Verzweigung vorgenommen werden, haben keinen Einfluss auf die Leitung, so dass die Leitung weiterhin verwendbar ist, sodass andere dort weiterarbeiten können (wie Bugfixes oder kleine Verbesserungen). Sobald Ihre function fertig ist, integrieren Sie den Zweig wieder in den Stamm. Dies würde alle Ihre Änderungen vom Zweig zum Stamm verschieben.

Es gibt eine Reihe von Mustern, die Menschen für Zweige verwenden. Wenn Sie ein Produkt mit mehreren Hauptversionen gleichzeitig unterstützen, ist normalerweise jede Version ein Zweig. Wo ich arbeite, haben wir eine QA-Filiale und eine Produktionsfiliale. Bevor wir unseren Code für QA freigeben, integrieren wir Änderungen in den QA-Zweig und implementieren sie von dort aus. Wenn wir in die Produktion gehen, integrieren wir uns von der QA-Niederlassung in die Produktionsabteilung, so dass wir wissen, dass der in der Produktion laufende Code identisch ist mit dem, was die QA getestet hat.

Hier ist der Wikipedia-Eintrag über Zweige , da sie die Dinge wahrscheinlich besser erklären als ich. 🙂

Trunk ist der Basisordner des Anwendungscodes. Hier arbeiten Sie an Ihrer nächsten Version / Version.

Branch ist ein Ordner, in dem du einen Moment auswählen kannst und einen anderen Entwicklungsweg als den / Trunk einschlagen kannst. Eine häufige Anwendung von Branch besteht darin, Ihrem Entwicklungsteam Zugriff auf einen aktuellen Snapshot Ihrer Anwendung zu geben, so wie sie in der Produktion vorhanden ist, z. / Branche / Produktion-Wartung.

Dieses “Verzweigungs” -Konzept ermöglicht es Ihrem Team, Fehlerbehebungen / Verbesserungen der Produktion zu erstellen, ohne die laufende Arbeit für Ihre nächste Version zu beeinträchtigen, die derzeit in / Trunk stattfindet. Zweige können auch Mini-functionen sein, die Entwicklern in großen Teams erlauben, atomar zu arbeiten und zu einem späteren Zeitpunkt wieder in / Trunk zusammenzuführen.

Tags ist ein Ordner, mit dem Sie Snapshots Ihrer Anwendung erstellen und mit genau diesen “Builds” arbeiten können. Dies ermöglicht Ihrem Team sowohl beim Testen als auch beim Finden der Unterschiede zwischen den Builds Flexibilität. In / Branch finden Sie häufig eine Namenskonvention, die sich auf Ihre Builds bezieht, d. /Branch/2.0.0, /Branch/2.0.1, /Branch/3.1.0 und so weiter. Die Namenskonvention liegt bei Ihnen und Ihrem Team; halte es konsequent!

Trunk : Nach Beendigung jedes Sprints in agil kommen wir mit einem teilweise lieferbaren Produkt heraus. Diese Releases werden im Kofferraum aufbewahrt.

Zweige : Alle parallelen Entwicklungscodes für jeden laufenden Sprint werden in Zweigen gespeichert.

Tags : Jedes Mal, wenn wir eine teilweise lieferbare Produktversion einer Beta-Version veröffentlichen, machen wir ein Tag dafür. Dies gibt uns den Code, der zu diesem Zeitpunkt verfügbar war, so dass wir bei Bedarf zu einem bestimmten Zeitpunkt während der Entwicklung in diesen Zustand zurückkehren können.

Für Personen, die mit GIT vertraut sind, entspricht der Master in GIT dem Stamm in SVN.

Branch und Tag haben dieselbe Terminologie in GIT und SVN.