Frage

Ich bin Modernisierungen derzeit die Art und Weise unser Geschäft Versionskontrolle der Fall ist. Wir werden eine Server-centric Versionskontrolle Lösung werden.

Ich würde gerne sehen, wie andere Leute Verzweigung und es erfolgreich zu tun, ohne alle Kopfschmerzen ich gelesen.

Was sind einige Feldverzweigungsmuster getestet, in einer Produktionsumgebung gesehen haben, die gut funktionierte das heißt pro Release Verzweigung. Welche Maßnahmen wurden ergriffen, dass Verzweigung, um sicherzustellen, glatt geht.

Danke

War es hilfreich?

Lösung

Es hängt davon ab, welche Art von Software, die Sie zu entwickeln.

Für uns wir ein Web-Shop sind, so haben wir keine nummerierten ‚Veröffentlichungen‘. Wir halten Stamm als das, was ist ‚Produktion‘ würdig und nur direkt kleine Änderungen.

Wenn wir ein großes Projekt haben erstellen wir eine Niederlassung und arbeiten sie bis zur Produktion bereit, die ganze Zeit die Synchronisierung Änderungen vom Stamm hinein.

Wenn das Projekt eine große Umstrukturierung der Code-Basis umfasst werden wir in der Regel einen Tag auf der letzten Revision erstellen, bevor die Änderungen auf dem Zweig zusammenführen.

Auch wenn Sie verpackte Software erstellen, auf dem Sie verschiedene Versionen dieses nicht annähernd funktioniert auch pflegen müssen.

Für die Aufzeichnung verwenden wir Subversion .

Andere Tipps

Die Subversion Buch beschreibt einige häufig verwendete Verzweigungsmuster (zB Freigabe Zweige, Feature Zweige usw.).

3 Dinge, wenn man bedenkt, Verzweigung.

Erstens: Branching ist in Ordnung, solange man Dinge fusioniert später wieder auf beabsichtigt. Sicher kann man immer eine Niederlassung hat mit einem bestimmten Patch für einen Ihrer Kunden mit einem bestimmten Problem. Aber schließlich wollen Sie die meisten der Patches zurück zum Hauptstamm fusionieren

Zweitens: Behaupten Ihre Bedürfnisse. Ich habe Baum aller Größen von der Größe der Abteilung, die Anzahl der Kunden, etc ...

je gesehen

Drittens: Prüfen Sie, wie gut Ihre Source-Control ist für Branching und Merging. Zum Beispiel ist CVS notorisch sehr schlecht für diese Art von Operation. SVN, „CVS richtig gemacht“, wie sie behaupten, ist etwas besser. Aber Linus Torvalds die Git erstellt (die für diese Art von Betrieb besonders gut ist) würden Ihnen sagen, CVS kann nicht richtig durchgeführt werden (er sagte es in einem sehr interessanten Vortrag über Git). Also, wenn Sie wirklichen Bedarf für das Branching und Merging, zumindest bekommen SVN nicht CVS.

Hier finden Sie aktuelle Muster Verzweigung:

http://www.cmcrossroads.com/bradapp/acme/branching/

Es beschreibt eine Reihe von Mustern für mit Mustern arbeiten. Ich habe auf zwei Arten im Allgemeinen gearbeitet:

  • Stabile Empfangsleitung - alle Entwicklung ist in den Filialen durchgeführt und fusionierte nur in dem Stamm, wenn erforderlich. Dies bedeutet, dass Sie immer einen einzigen stabilen Release Punkt haben.

  • Hauptentwicklungslinie - alle Arbeiten im Kofferraum durchgeführt. Wenn es um die Freigabe kommt nehmen Sie einen Release-Tag und diese verwenden. Wenn wichtige experimentelle Nacharbeit erforderlich ist, ist in einem Zweig durchgeführt und fusionierte zurück in Stamm als stabil.

Dies ist die Art, wie wir tun und es funktioniert gut für uns ...

Project
   |
   +--01-Development
   |  |
   |  +--Release1.0
   |  |  |
   |  |  +--Solution Files
   |  |   
   |  +--Release2.0
   |     |
   |     +--Solution Files
   |
   +--02-Integration
   |  |
   |  +--Release1.0
   |  |  |
   |  |  +--Solution Files
   |  |   
   |  +--Release2.0
   |     |
   |     +--Solution Files
   |
   +--03-Staging
   |
   +--04-Production

gut Sie auf die Idee ...

Hinweis: Das in Team Foundation Server Branchen die Verzeichnisstruktur ist existiert nur zwischen 01-Entwicklung / Release1.0 und 02-Integration / Release1.0, 02-Integration / Release1.0 und 03-Staging / Release1.0, 03-Staging / Release1.0 und 04-Produktion / Release1.0

Mit anderen Worten würden Sie nicht in der Lage sein 03-Staging fusionieren / Release1.0 bis 04-Produktion / Release2.0, etc ...

Was das bedeutet für uns ist, haben wir 4 separate Umgebungen Entwicklung, Integration (Alpha-Server), Staging (Beta-Server), Produktion.

Code beginnt in der Entwicklung beginnt in der Entwicklung und wird, wie es Test von QA (Integration / alpha) und Anwender (Staging / beta) und schließlich zur Produktion dann gefördert werden.

Features / Änderungen werden gesammelt und in Veröffentlichungen gruppiert, die alle paar Monate occure.

Aber können Sie sagen für Release2.0 in Entwicklung sind und Sie erhalten eine Produktion Ausgabe auf Release1.0 ... Ich kann leicht neueste Version von Release1.0 erhalten und das Problem beheben und fördern, ohne etwas zu bewirken, dass ich wurden für Release2.0 arbeiten

sage nicht, dies in jeder Situation für alle funktioniert, aber das funktioniert sehr gut für uns.

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