Frage

Als ich begann, mit Versionsverwaltungssystemen wie CVS und SVN, Ich habe nicht wirklich verstehen die Konzepte der "Stamm", branching, merging und tagging.Ich bin jetzt beginnen, diese Konzepte verstehen, und wirklich die Wichtigkeit und die Kraft hinter Ihnen.

So, ich fange an, es richtig zu machen.Oder so denke ich...Dies ist, was ich bisher verstehe:Das neueste release/stable version Ihres Codes sollte sitzen /trunk/ während der beta-Versionen oder bleeding edge Versionen sitzen in der /Branchen/ Verzeichnis wie verschiedene Verzeichnisse für jeden beta-Version, und dann zusammengeführt in den Kofferraum, wenn Sie release.

Ist das zu simpel, ein Sicht auf die Dinge?Was repository-layouts, tun Sie Jungs empfehlen?Wenn es einen Unterschied macht, ich bin die Verwendung von Subversion ab.

War es hilfreich?

Lösung

Sehen diese beiden Fragen auf, DAMIT für weitere Informationen:

Andere Tipps

Was ich Tue, und die normalerweise als standard ist:

Der Stamm sollte enthalten die Hauptlinie der Entwicklung, Ihre instabile version.Sollten Sie release-Zweigen, die für Ihre Veröffentlichungen.

Etwas wie:

/Stamm (hier sind der Entwicklung von version 2.0) /branches/RB-1.0 (release-Zweig für 1.0) /branches/RB-1.5

Wenn Sie einen Fehler finden, 1.5, fixieren Sie es in der RB-Filiale und dann fahren Sie an den Stamm.

Ich empfehle auch dieses Buch.

Eric hat eine exzellente Serie von Artikeln über die Quellcodeverwaltung verwenden und organisatorische best practices.Kapitel 7 befasst sich mit Zweigen (und ja, es empfiehlt /trunk/ und /branches/ Verzeichnisse, die Sie vorschlagen).

Benutzt habe ich Notgedrungen für eine lange Zeit, und so meine Kommentare kann ein wenig Notgedrungen-centric, aber die grundlegenden Prinzipien gelten für alle SCM-software, die halbwegs anständige Verzweigung.Ich bin ein starker Gläubiger mit verzweigten Entwicklung Praktiken.Ich habe eine "Haupt" (aka "mainline"), die für die Codebasis von nun an bis in Ewigkeit.Ziel ist es, dass dies ist, die meisten der Zeit, stabil und, wenn push kam zu schieben, Sie könnte cut a release anytime, würde sich die aktuelle Funktionalität des Systems.Diese lästigen Verkaufs-Jungs immer wieder Fragen....

Entwicklungen passieren in den Filialen, die verzweigte aus der MAIN (normal - gelegentlich möchten Sie vielleicht Zweig aus einem vorhandenen dev-Zweig).Integration von HAUPT-zu Ihrem dev-Zweige so oft Sie können, um die Dinge aufhören, divergierenden, zu viel, oder Sie können einfach das budget für eine größere integration Zeit später.Nur integrieren, deinen Arsch treten neue feature to MAIN wenn Sie sich sicher sind, dass es in einer kommenden Version.

Schließlich haben Sie ein RELEASE-Linie, die die option, die in verschiedenen Branchen für verschiedene Versionen.Es gibt einige Entscheidungen, die je nach Kennzeichnung Fähigkeiten Ihres SCM software,und wie unterschiedlich major/minor-Versionen werden wahrscheinlich zu sein.So können Sie entscheiden, für Beispiel, für einen release-Zweig für jeden Punkt, den release, oder nur für die großen rev-Nummer.Ihre Laufleistung kann variieren.

In der Regel, Zweig, von HAUPT zu release so spät wie möglich.Bugfixes und änderungen in letzter minute können entweder sofort in den RELEASE für die spätere integration in HAUPT-oder in die MAIN-für die sofortige integration sichern.Es gibt keine harte und schnelle Regel - tun Sie, was am besten funktioniert.Wenn, jedoch, Sie haben änderungen, die eingereicht werden können, um MAIN (z.B.aus einem dev-Zweig) oder "kleine Kniffe" von jemandem am MAIN), dann tun die ehemaligen.Es hängt davon ab, wie Ihr team arbeitet, was Ihre release-Zyklen sind etc.

E. g.Ich würde etwas wie dieses:

//MYPROJECT/MAIN/... - the top level folder for a complete build of all the product in main.
//MYPROJECT/DEV/ArseKickingFeature/... - a branch from MAIN where developers work.
//MYPROJECT/RELEASE/1.0/...
//MYPROJECT/RELEASE/2.0/...

Ein nicht triviales Projekt wird wahrscheinlich haben eine Reihe von DEV-Zweige aktiv sind.Wenn eine Entwicklung integriert wurde MAIN, so dass es ist jetzt Teil des Kern-Projekt, töten die alten DEV-Zweig so schnell wie Sie können.Viele Ingenieure zu behandeln, wird eine DEV-Zweig als Ihren eigenen persönlichen Raum, und verwenden es für verschiedene Funktionen im Laufe der Zeit.Raten von dieser.

Wenn Sie nach der Version, die Sie haben, um einen Fehler zu beheben, dann tun Sie in den entsprechenden release-Zweig.Wenn der Fehler wurde bereits behoben, die HAUPT -, dann integrieren über, es sei denn, der code hat sich so viel geändert, im MAIN-das Update ist anders.

Was wirklich unterscheidet die codelines ist die Politik, die Sie verwenden, um Sie zu verwalten.Zum Beispiel, was die tests laufen zu bekommen, die Bewertungen pre/post-eine änderung, welche Aktion ausgeführt wird, wenn ein build bricht.In der Regel Richtlinien - und somit Gemeinkosten - sind am stärksten in der release-Zweige, und die schwächsten in der DEV.Es ist ein Artikel hier das geht über einige Szenarien, und links zu anderen nützlichen Dinge.

Schließlich, ich empfehlen, geht mit eine einfache Struktur, mit zu beginnen, und nur die Einführung von extra-dev & release diejenigen wie nötig.

Hoffe, das hilft und ist nicht unter Angabe-der-bleedin'-offensichtlich zu viel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top