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

13voto

mbillard Punkte 37218

En Kofferraum ist die Entwicklungslinie, die den neuesten Quellcode und die neuesten Funktionen enthält. Sie sollte die neuesten Fehlerkorrekturen sowie die neuesten Funktionen enthalten, die dem Projekt hinzugefügt wurden.

En Zweige werden in der Regel verwendet, um etwas außerhalb des Stammes (oder einer anderen Entwicklungslinie) zu tun, das sonst Pause den Bau. Neue Funktionen werden oft in einem Zweig erstellt und dann wieder in den Stamm eingebunden. Zweige enthalten oft Code, der nicht unbedingt für die Entwicklungslinie freigegeben ist, von der er abgezweigt wurde. Ein Programmierer könnte zum Beispiel eine Optimierung in einem Zweig ausprobieren und erst wieder in die Entwicklungslinie einfließen lassen, wenn die Optimierung zufriedenstellend ist.

En tags sind Schnappschüsse des Repositorys zu einem bestimmten Zeitpunkt. An diesen sollte keine Entwicklung stattfinden. Meistens werden sie verwendet, um eine Kopie dessen zu erstellen, was für einen Kunden freigegeben wurde, so dass Sie leicht auf das zugreifen können, was ein Kunde verwendet.

Hier ist ein Link zu einem sehr guten Leitfaden für Repositories:

Auch die Artikel in Wikipedia sind lesenswert.

12voto

BakerTheHacker Punkte 356

Das ist das Problem bei der Softwareentwicklung: Es gibt kein einheitliches Wissen über irgendetwas, jeder scheint es auf seine Weise zu machen, aber das liegt daran, dass es sich um eine relativ junge Disziplin handelt.

Das ist meine ganz einfache Methode,

Kofferraum - Das trunk-Verzeichnis enthält die aktuellste, genehmigte und zusammengeführte Arbeit. Im Gegensatz zu dem, was viele zugegeben haben, ist mein Stammverzeichnis nur für saubere, ordentliche, genehmigte Arbeit und nicht für einen Entwicklungsbereich, sondern eher für einen Veröffentlichungsbereich.

Zu einem bestimmten Zeitpunkt, wenn der Stamm bereit zur Freigabe zu sein scheint, wird er markiert und freigegeben.

Zweige - Das Verzeichnis der Zweige enthält Experimente und laufende Arbeiten. Die Arbeit unter einem Zweig bleibt dort, bis sie für die Zusammenführung mit dem Stamm freigegeben wird. Für mich ist dies der Bereich, in dem die ganze Arbeit geleistet wird.

Zum Beispiel: Ich kann eine Iteration-5 Zweig für eine fünfte Runde der Entwicklung des Produkts, vielleicht eine Prototyp-9 Zweig für eine neunte Runde des Experimentierens und so weiter.

tags - Das tags-Verzeichnis enthält Snapshots von freigegebenen Zweigen und Stammversionen. Immer wenn ein Zweig für die Zusammenführung mit dem Stamm genehmigt wird oder eine Veröffentlichung des Stammes erfolgt, wird ein Schnappschuss des genehmigten Zweigs oder der Stammveröffentlichung unter tags erstellt.

Ich nehme an, dass ich mit Tags ganz einfach durch die Zeit zu interessanten Punkten hin und her springen kann.

10voto

Vince Punkte 111

Ich fand dieses großartige Tutorial über SVN, als ich auf der Website des Autor der OpenCV 2 Computer Vision Application Programming Cookbook und ich dachte, ich sollte es teilen.

Er hat eine Anleitung, wie man SVN benutzt und was die Begriffe 'trunk', 'tag' und 'branch' bedeuten.

Direkt aus seinem Tutorium zitiert:

Die aktuelle Version Ihres Softwareprojekts, an der Ihr Team gerade arbeitet, befindet sich normalerweise in einem Verzeichnis namens Kofferraum . Wenn sich das Projekt weiterentwickelt, aktualisiert der Entwickler diese Version (Behebung von Fehlern, Hinzufügen neuer Funktionen) und übermittelt seine Änderungen unter diesem Verzeichnis.

Zu einem bestimmten Zeitpunkt können Sie eine Version einfrieren und einen Schnappschuss der Software in diesem Entwicklungsstadium erstellen. Dies entspricht in der Regel den offiziellen Versionen Ihrer Software, z. B. denjenigen, die Sie an Ihre Kunden ausliefern werden. Diese Schnappschüsse befinden sich unter dem tags Verzeichnis Ihres Projekts.

Schließlich ist es oft sinnvoll, irgendwann eine neue Entwicklungslinie für Ihre Software zu schaffen. Dies ist zum Beispiel dann der Fall, wenn Sie eine alternative Implementierung testen wollen, bei der Sie Ihre Software ändern müssen, diese Änderungen aber nicht an das Hauptprojekt weitergeben wollen, bevor Sie nicht entschieden haben, ob Sie die neue Lösung übernehmen. 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 namens Zweige .

9voto

bradtgmurray Punkte 12945

Das trunk-Verzeichnis ist das Verzeichnis, mit dem Sie wahrscheinlich am meisten vertraut sind, da es die neuesten Änderungen enthält. Ihre Haupt-Codebasis sollte sich im trunk-Verzeichnis befinden.

Das Zweigstellenverzeichnis ist für Ihre Zweigstellen gedacht, ganz gleich, um welche es sich handelt.

Das Tags-Verzeichnis dient im Wesentlichen dazu, eine bestimmte Gruppe von Dateien zu markieren. Das macht man z.B. bei Releases, wo man möchte, dass "1.0" diese Dateien in diesen Revisionen und "1.1" diese Dateien in diesen Revisionen sind. Einmal erstellte Tags lassen sich normalerweise nicht mehr ändern. Für weitere Informationen über Tags, siehe Kapitel 4. Verzweigung und Zusammenführung (in Versionskontrolle mit Subversion ).

9voto

MarcH Punkte 17384

Einer der Gründe, warum jeder eine etwas andere Definition hat, ist, dass Subversion die Null Unterstützung für Zweige und Tags. Subversion sagt grundsätzlich: Wir haben uns angesehen mit allen Funktionen Zweige und Tags in anderen Systemen und fanden sie nicht nützlich, also haben wir nichts implementiert. Erstellen Sie einfach eine Kopie in ein neues Verzeichnis mit dem Namen Tagung stattdessen . Dann steht es natürlich jedem frei, etwas andere Konventionen zu haben. Zum Verständnis des Unterschieds zwischen einer real Tag und eine bloße Kopie + Namenskonvention siehe den Wikipedia-Eintrag _Subversion-Tags und -Zweige_ .

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