Verzweigungs- und Zusammenführungsstrategien
Ich wurden mit der Aufgabe betraut, kommen mit einer Strategie für branching, merging und die Freigabe in den nächsten 6 Monaten.
Die Komplikation rührt aus der Tatsache der wir werden laufen mehrere Projekte, die alle mit verschiedenen code-änderungen und unterschiedliche release-Datum, sondern in etwa die gleiche Entwicklung Starttermine.
Derzeit sind wir mit VSS für code-management, aber sind Sie sich bewusst, dass Sie wird wahrscheinlich dazu führen, einige Probleme und wird die Migration zu TFS, bevor neue Entwicklung beginnt.
Welche Strategien sollte ich mich beschäftigen, und welche Dinge sollte ich in Betracht ziehen, bevor Sie eine plan unten?
Sorry, wenn dies ist vage, fühlen Sie sich frei, Fragen zu stellen und ich werde zu aktualisieren, mit mehr Informationen, wenn erforderlich.
InformationsquelleAutor der Frage benPearce | 2009-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die beste source-control-Musterdass ich über gekommen sind. Er betont die Bedeutung des Ausscheidens aus dem Stamm frei von junk-E-Mail (kein junk in the trunk). Entwicklung in der Entwicklung der Zweige, und regelmäßige Zusammenführungen (nachdem der code überprüft wurde), sollte gemacht werden, zurück in den Kofferraum (Bild 1), aber das Modell erlaubt auch für die source gepatcht werden, während noch in der Entwicklung (Bild 2). Ich auf jeden Fall empfehlen, das Lesen der post in seiner Gesamtheit vollständig zu verstehen.
Edit: Die Bilder sind definitiv verwirrend, ohne Worte. Ich könnte erklären, aber ich würde im Grunde das kopieren der original-Autor. Having said that, wahrscheinlich sollte ich gewählt haben, ein besseres Bild zu beschreiben, der merge-Prozess, also hoffentlich hilft. Ich würde noch empfehlen das Lesen der post, aber:
InformationsquelleAutor der Antwort senfo
Die einfachste und übliche Weg, die ich gesehen habe Verzweigung Arbeit ist aus zwei Räumlichkeiten. Trunk und Release. Ich denke, dies ist bekannt als "Instabile Rumpf -, stable-branch" - Philosophie.
Stamm ist Ihre wichtigste Quelle. Diese enthält die "neueste und beste" - code und ist zukunftsgerichtet. Es in der Regel nicht immer stabil.
Release ist eine eins-zu-viele-Assoziation mit Kofferraum. Es gibt einen Stamm, sondern viele Veröffentlichungen, die sich aus dem Stamm. Releases in der Regel beginnen Sie mit einem Zweig des Stammes sobald eine bestimmte Funktionalität Meilenstein getroffen wurde, so dass die "nur" Dinge, die Links zu gehen, für eine bestimmte Installation sollten nur Bugfixes sein. Sie verzweigen dann den Stamm, geben Sie eine Beschriftung (z.B. 1.6 Release ist die aktuelle neueste Version), erstellen Sie und senden Sie die Freisetzung in die QS. Wir drücken die Versionsnummer (in der Regel die zweite Nummer (minor number) der Stamm bis zu diesem Zeitpunkt um sicherzustellen, dass wir nicht zwei Versionen mit der selben Nummer.
Dann beginnen Sie die Tests auf Ihrem release-Zweig. Wenn ausreichende Tests wurden durchgeführt, die Sie anwenden, Fehlerbehebungen im release-branch, merge diese wieder in den Kofferraum, um sicherzustellen, bug-fixes, die vorgetragen werden!) und dann re-release eine Version der Filiale. Dieser Zyklus mit QA weiter, bis Sie beide glücklich und der release ist endlich auch an die Kunden(s). Alle bug-reports von den Kunden(s), die korrekt sind (d.h. Sie sind ein bug!) starten Sie eine andere QA-Zyklus mit der Branche in Frage.
Wie erstellen Sie zukünftige Versionen ist es eine gute Idee, auch versuchen, sich zu bewegen von älteren Kunden auf die neueren Zweige zu einer geringeren Zahl von Filialen die Sie haben könnten zu Rücken-patch ein bug-fix in.
Mithilfe dieser Technik können Sie Lösungen bereitstellen, die mithilfe Ihrer Technologie, um eine Vielzahl von Kunden, die erfordern unterschiedliche service-Level (beginnend mit zumindest ersten), können Sie isolieren Ihre vorhandenen Bereitstellungen von "gefährlichen" neuen code in den Kofferraum und das Schlimmste Zusammenführungs-Szenario ist ein Zweig.
InformationsquelleAutor der Antwort Quibblesome
Meine erste Empfehlung wäre, lies Eric Spüle Source-Control HOWTO - speziell die Filialen und branch merge Kapitel.
Wir haben 3 Container - DEV, HAUPT -, und RELEASE für unsere Arbeit. MAIN enthält alle unsere "ready-to-release" - code, und wir neigen dazu zu denken, es als "grundsätzlich stabil". DEV/Iteration (oder DEV/Feature, oder DEV/RiskyFeatureThatMightBreakSomeoneelse) sind Zweige von HAUPT-und zusammengeführt werden, wenn die Iteration/Funktion bereit ist zu fördern, bis über die DEV-Umgebung. Wir haben auch TFS-builds eingestellt DEV/Iteration Niederlassung und der Hauptniederlassung.
Unserer RELEASE-container enthält nummerierte Versionen (ähnlich den "tags" verwendete container, der in vielen Subversion-Repositorys). Wir nehmen Sie einfach einen Zweig von HAUPT-jedes mal - ich mag zu sagen, wir "schneiden" ein RELEASE-Zweig zu bedeuten, dass dies sollte nicht haben eine Menge von Aktivitäten gehen auf einmal die Zusammenführung abgeschlossen ist.
Als für VSS->TFS - Microsoft unterstützt eine upgrade-Pfad die sollte halten Sie Ihre version der Geschichte, aber wenn Sie nicht brauchen, es die Geschichte ist, würde ich einfach die neueste version von VSS, überprüfen Sie es in TFS und Archiv der VSS-repository.
Ein letzter Tipp - Holen Sie Ihre team-Mitglieder vertraut mit source-control. Sie müssen verstehen, verzweigen und Zusammenführen oder Sie stecken dabei eine Menge Aufräumarbeiten :).
Glück!
InformationsquelleAutor der Antwort Nicolas Webb
Subversion Buch beschreibt einige häufige Verzweigung Muster. Vielleicht können Sie auch für TFS.
InformationsquelleAutor der Antwort M4N