Unser Unternehmen verwendet derzeit ein einfaches Trunk- / Release- / Hotfixes-Verzweigungsmodell und möchte Ratschläge dazu, welche Verzweigungsmodelle für Ihr Unternehmen oder Ihren Entwicklungsprozess am besten geeignet sind.
Workflows / Verzweigungsmodelle
Im Folgenden sind die drei Hauptbeschreibungen aufgeführt, die ich gesehen habe, aber sie widersprechen sich teilweise oder gehen nicht weit genug, um die nachfolgenden Probleme zu lösen, auf die wir gestoßen sind (wie unten beschrieben). Daher verwendet unser Team bisher standardmäßig nicht so gute Lösungen. Machst du etwas besseres
Zusammenführen gegen erneutes Basieren (Wirren gegen sequentielle Geschichte)
Sollte man
pull --rebase
oder mit dem Zusammenführen zur Hauptlinie warten, bis Ihre Aufgabe beendet ist? Persönlich neige ich zur Verschmelzung, da dadurch eine visuelle Darstellung erhalten bleibt, auf welcher Basis eine Aufgabe gestartet und beendet wurde, und ich bevorzuge sogarmerge --no-ff
diesen Zweck. Es hat jedoch andere Nachteile. Viele haben auch die nützliche Eigenschaft des Zusammenführens nicht erkannt - dass es nicht kommutativ ist (das Zusammenführen eines Themenzweigs mit dem Master bedeutet nicht, dass der Master mit dem Themenzweig zusammengeführt wird).Ich suche einen natürlichen Workflow
Manchmal passieren Fehler, weil unsere Verfahren eine bestimmte Situation nicht mit einfachen Regeln erfassen. Zum Beispiel sollte ein Fix, der für frühere Releases benötigt wird, natürlich so weit stromabwärts basieren, dass er stromaufwärts in alle erforderlichen Zweige integriert werden kann (ist die Verwendung dieser Begriffe klar genug?). Es kommt jedoch vor, dass ein Fix es in den Master schafft, bevor der Entwickler erkennt, dass er weiter stromabwärts platziert werden sollte, und wenn dies bereits vorangetrieben ist (noch schlimmer, zusammengeführt oder etwas, das darauf basiert), bleibt die verbleibende Option Kirschpflücken mit die damit verbundenen Gefahren. Welche einfachen Regeln wie diese verwenden Sie?Darin ist auch die Unbeholfenheit eines Themenzweigs enthalten, der notwendigerweise andere Themenzweige ausschließt (vorausgesetzt, sie sind von einer gemeinsamen Grundlinie verzweigt). Entwickler möchten eine Funktion nicht beenden, um eine andere zu starten. Sie haben das Gefühl, dass der Code, den sie gerade geschrieben haben, nicht mehr vorhanden ist
Wie vermeide ich Zusammenführungskonflikte (aufgrund von Cherry-Pick)?
Ein sicherer Weg, einen Zusammenführungskonflikt zu erzeugen, besteht darin, zwischen Zweigen zu wählen. Sie können nie wieder zusammengeführt werden. Würde das Anwenden des gleichen Commits beim Zurücksetzen (wie geht das?) In beiden Zweigen möglicherweise diese Situation lösen? Dies ist ein Grund, warum ich es nicht wage, auf einen weitgehend auf Zusammenführungen basierenden Workflow zu drängen.
Wie zerlegt man sich in aktuelle Zweige?
Wir sind uns bewusst, dass es fantastisch wäre, eine fertige Integration aus Themenzweigen zusammenzustellen, aber oft ist die Arbeit unserer Entwickler nicht klar definiert (manchmal so einfach wie "Stöbern") und wenn ein Code bereits in ein "anderes" Thema eingegangen ist, es kann dort nicht wieder herausgenommen werden, gemäß der obigen Frage? Wie arbeiten Sie mit der Definition / Genehmigung / Abschluss / Freigabe Ihrer Themenbereiche?
Richtige Verfahren wie Codeüberprüfung und Abschluss wären natürlich sehr schön.
Aber wir können die Dinge einfach nicht genug entwirren, um dies zu bewältigen - irgendwelche Vorschläge? Integrationszweige, Illustrationen?
Unten finden Sie eine Liste verwandter Fragen:
- Welche guten Strategien ermöglichen es, dass bereitgestellte Anwendungen Hotfixing-fähig sind?
- Workflow-Beschreibung für die Verwendung von Git für die Eigenentwicklung
- Git-Workflow für die Entwicklung von Linux-Kerneln für Unternehmen
- Wie pflegen Sie Entwicklungscode und Produktionscode? (Danke für dieses PDF!)
- Git veröffentlicht Management
- Git Cherry-Pick gegen Merge Workflow
- Wie man mehrere Commits auswählt
- Wie füge ich ausgewählte Dateien mit git-merge zusammen?
- So wählen Sie eine Reihe von Commits aus und verschmelzen zu einem anderen Zweig
- ReinH Git Workflow
- Git-Workflow zum Vornehmen von Änderungen, die Sie niemals zum Ursprung zurückschieben werden
- Wählen Sie eine Zusammenführung aus
- Richtiger Git-Workflow für kombiniertes Betriebssystem und privaten Code?
- Projekt mit Git pflegen
- Warum kann Git keine Änderungen an Merge-Dateien mit einem geänderten übergeordneten / Master ändern?
- Git Branching / Rebasing Good Practices
- Wann bringt mich "git pull --rebase" in Schwierigkeiten?
- Wie wird DVCS in großen Teams eingesetzt?
Lesen Sie auch, was Plastic SCM über die aufgabengesteuerte Entwicklung schreibt. Wenn Sie sich nicht für Plastic entscheiden, lesen Sie das Verzweigungsmodell von nvie und seine unterstützenden Skripte .