Lesen Sie ein paar "Warum ein DVCS besser ist" -Antworten auf mehrere Fragen zu Programmierern. Sie alle scheinen zu sagen, dass DVCS im Allgemeinen besser ist, da Sie in großen Projekten kein Commit-Rennen haben, dh IE-Commit, also veraltet aktualisieren, festschreiben, wieder veraltet, festschreiben, immer noch veraltet usw.
DVCS begrenzen dies mit dem Konzept des Push. Aber würde es in sehr großen Projekten nicht ein "Push Race" geben, besonders am Ende des Tages? Ich weiß, dass dies in Git durch die ständige Verzweigung für alles etwas behoben wird, aber in Mercurial verzweigt man nicht, man erstellt einen neuen Kopf.
Problem sehe ich
- Benutzer versucht zu pushen
- Veraltet (Mercurial lässt Sie nicht pushen, wenn Ihr lokales Repo veraltet ist), sodass Sie Ihre lokalen Änderungen abrufen und zusammenführen
- Der Benutzer versucht erneut zu pushen, aber während er zusammengeführt hat, hat jemand anderes gepusht, sodass er wieder veraltet ist
- Ziehen und erneut zusammenführen
- Immer noch veraltet
- Wiederholen
Klingt bekannt?
Ist dies ein tatsächliches Problem bei sehr großen und beliebten Quecksilber-Repos? Was ist mit in einem Unternehmen, wenn jeder seinen letzten Schub des Tages macht?
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
--close-branch
- und mercurial hat Zweige benannt, Sie müssen nicht in ein neues Verzeichnis klonenAntworten:
Soweit mir bekannt ist, verwenden die meisten großen Open-Source-Projekte, die DVCS verwenden, "Pull-Anforderungen" anstelle von Pushs, dh ein Benutzer fordert das Projekt an, aus seinem Zweig zu ziehen, und das Projekt kann diese Pull-Anforderungen in beliebiger Reihenfolge ausführen , wenn überhaupt. Dadurch entfällt die Notwendigkeit für das "Push Race", wie Sie es genannt haben.
In anderen Unternehmen kann ich nicht für Prozesse bürgen, aber wo ich arbeite, ist dies kein Problem.
Wenn Sie an einem Fall arbeiten, arbeiten Sie an einem Zweig des gesamten Repos, sodass Ihre Push-Anforderungen an eine Remote-Version des Haupt-Trunks gesendet werden. Wenn Sie Ihr (fertiges) Wechselgeld in den Kofferraum integrieren möchten, laden Sie den Kofferraum auf, ziehen, verschmelzen, drücken.
Gelegentlich ( sehr gelegentlich) versuchen zwei Personen dies gleichzeitig (üblich aufgrund von Missverständnissen). In diesem Fall muss jeder, der "verliert", nur erneut ziehen, zusammenführen, drücken. Da es keine Eile um 17 Uhr gibt, sich auf ein zentrales Repository festzulegen, ist das von Ihnen beschriebene Problem nicht wirklich vorhanden.
Das ist das Schöne an DVCS: Die Verzweigung ist schmerzlos, sodass jeder an seiner eigenen Verzweigung arbeiten kann.
BEARBEITEN
Oh, ich habe gerade Ihren Kommentar "In Quecksilber verzweigen Sie sich nicht ..." bemerkt: Ja, das tun Sie. Sie müssen nicht, aber da es so einfach ist und die Vorteile überwiegen, wenn Sie dies nicht tun, tendieren Sie dazu, nur Repos zu verzweigen.
quelle
Nein, es gibt kein Push-Rennen, da in Themenbereichen gearbeitet wird . Ein Merge-Master verwaltet die (relativ geringe) Komplexität des Kombinierens der Zweige zu einem Integrationszweig . Dies erfolgt normalerweise kontinuierlich. Für weitere Informationen zu verteilten Versionskontroll-Workflows wäre die erste Quelle das Maul des Pferdes :
man gitworkflows
, hier online . Mercurial Workflows tun Verwendung Verzweigung trotz Ihrer Forderung und die Techniken sind ähnlich.quelle