Ich verwende default
branch für die laufende Entwicklung und werde jetzt einen neuen benannten Zweig erstellen, um ein Release zu markieren. Alle weiteren Entwicklungen werden auf dem Standard-Zweig durchgeführt, alle Fehlerbehebungen für die Produktion werden auf dem neuen Zweig durchgeführt (mit anschließender Zusammenführung zu default
), wie folgt:
Das Obenstehende scheint der Weg zu sein, aber es scheint einfach zu sein, Dinge durcheinander zu bringen und umgekehrt (von default
bis aristotle
, was bedeutet, dass alle neuen Features in erscheinen werden der Produktionszweig).
Vielleicht sind meine Ängste grundlos, weil man das Durcheinander bemerken wird, bevor man den Commit zum zentralen Repo durchsetzt, aber ich würde gerne sehen, ob es möglich ist, den Ansatz narrensicherer zu machen.
Also habe ich angefangen, in Haken zu schauen:
%Vor%.. aber dann habe ich gemerkt, dass es nicht das ist, was ich brauche, denn das wird mir nicht erlauben, Änderungen des Aristoteles überhaupt vorzunehmen.
Ich bin mir also nicht sicher, was ich tun soll. Im Idealfall möchte ich, dass Entwickler die Meldung "Falsche Zusammenführung" sehen, wenn sie versuchen, eine Zusammenführung von default
nach aristotle
lokal zu begehen (offensichtlich sollte die Zentrale doppelt überprüft werden) Repo), während der Übergang vom Produktionszweig zum Standard sollte möglich sein.
Danke!
Das sollte es tun. Es verwendet eine Revset-Abfrage , um Zusammenführungen in aristotle
von default
zu finden.
::aristotle and ::default and merge()
findet alle Zusammenführungen, die Vorfahren von aristotle
und default
branches p2(...) and branch(default)
ergreift das zweite übergeordnete Element (ankommendes Änderungsset), das sich im Zweig default
befindet. children(...) and branch(aristotle)
greift dann den tatsächlichen Zusammenführungsänderungssatz, der sich auf dem Zweig aristotle
befindet. Ich musste das vor kurzem selbst herausfinden , musste aber auch sicherstellen das default
wurde nicht indirekt in meinen Release-Zweig eingefügt, dh Standard - & gt; Merkmal - & gt; freilassen.
Das ist so ziemlich genau das Duplikat einer Frage von vor ein paar Tagen Sicherstellen, dass eine Zusammenführung zwischen Zweigen in einer Richtung erfolgt
Aber ich mochte meine Antwort nicht, also wie wäre es mit dieser:
Halten Sie separate Klone für frühere Versionen bereit. Wenn Sie in Ihrem obigen Beispiel entscheiden, dass Sie eine Notfallkorrektur für Aristoteles durchführen müssen, tun Sie dies stattdessen:
%Vor%Dann haben Sie einen Klon, in dem nur Aristoteles enthalten ist, und Sie können ihn nicht versehentlich in den Standard-Klon einfügen.
Das heißt, es ist immer noch keine gute Antwort. Der einzige wirkliche Trost ist, dass wenn Sie in eine Richtung verschmelzen, die Sie nicht mögen, Sie immer die beiden Köpfe erneut klonen und in die andere Richtung zusammenführen können.
Ich habe diese Frage bei der Suche nach einer Lösung für ein verwandtes Problem gefunden, ich weiß, es ist eine alte Frage, aber ich dachte, ich würde unsere Lösung teilen.
Wir haben Release-Zweige mit dem Namen release-x.y.z und laufende Entwicklung nach Standard. Wir verwenden einen Hook basierend auf dem Beispiel precommit_badbranch_badmerge, das in Ссылка gefunden wurde.
Wir extrahieren grundsätzlich die Versionsnummer für jeden Zweig, der an einer Zusammenführung beteiligt ist, und stellen sicher, dass es den richtigen Weg geht (Standard wird als 9999.9999.9999 behandelt, was kein Release oder Standardzweig ist, erhält -1, -1, -1 (kann in alles zusammengeführt werden).
Beachten Sie, dass dies nur eine einfache "sofortige" Überprüfung durchführt, es werden keine Probleme festgestellt, wenn jemand standardmäßig von der blah-Verzweigung und dann von einer Versionsverzweigung verschmilzt.
Als Nebenbemerkung haben wir auch eine Richtlinie, dass die Zusammenführung zu Standard zur gleichen Zeit wie die ursprüngliche Änderung im Veröffentlichungszweig gepusht werden muss. Dadurch wird vermieden, dass jemand die Zusammenführung durchführen muss, um ihre eigenen Änderungen zusammenzuführen - Es setzt durch, dass ich nach einer Lösung für suchte.
Beachten Sie, dass Sie dies über den Abschnitt hooks des Servers / zentralen Repo
aufrufen %Vor%python hook unten:
%Vor%Tags und Links mercurial