Leiden große Quecksilberdepots unter einem „Push Race“?

9

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

  1. Benutzer versucht zu pushen
  2. Veraltet (Mercurial lässt Sie nicht pushen, wenn Ihr lokales Repo veraltet ist), sodass Sie Ihre lokalen Änderungen abrufen und zusammenführen
  3. Der Benutzer versucht erneut zu pushen, aber während er zusammengeführt hat, hat jemand anderes gepusht, sodass er wieder veraltet ist
  4. Ziehen und erneut zusammenführen
  5. Immer noch veraltet
  6. 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?

TheLQ
quelle
Wer verzweigt sich nicht in Quecksilber? hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
Carson Myers
@ Carson In Git Filialen sind billig. Im Quecksilber sind sie viel dauerhafter. Im Allgemeinen habe ich gehört, dass Sie in git verzweigen, um an einer Funktion zu arbeiten, in mercurial einen neuen Kopf erstellen oder in ein anderes Verzeichnis klonen.
TheLQ
Nun, Sie können beim Festschreiben ein hinzufügen --close-branch- und mercurial hat Zweige benannt, Sie müssen nicht in ein neues Verzeichnis klonen
Carson Myers
@Carson Ich sage nicht, dass Sie nicht können oder dass es nicht möglich ist. Ich sage nur, dass ich immer gehört habe, dass die Konvention darin bestand, einen neuen Kopf zu klonen oder zu erstellen, nicht einen Zweig. Die meisten Quecksilber-Repos, die ich gesehen habe, haben nur wenige Zweige, während Git-Repos dazu neigen, einen Haufen zu haben
TheLQ
Ich bin nicht sicher, ich habe nie Git verwendet
Carson Myers

Antworten:

8

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.

Ed James
quelle
Ich habe immer gehört, dass Sie klonen, um an experimentellen Funktionen zu arbeiten, nicht an Verzweigungen. Die meisten Gründe, die ich gehört habe, sind, dass in Quecksilberzweigen viel dauerhafter sind als in Git. Ich könnte mich jedoch irren
TheLQ
Das ist die Sache, soweit Mercurial einen Klon betrifft ist ein Zweig, Sie immer noch so ziemlich alles tun , können Sie mit einem Standard „Kopf“ tun (und etwas mehr Material!), Aber Sie haben den zusätzlichen Luxus der Zug- / Schieben Sie den Abstand zum Kofferraum. Ich bin mir nicht sicher, was Sie mit Permanenz meinen. Wenn Sie mit Ihrem Klon fertig sind, können Sie ihn einfach löschen.
Ed James
Wie kommt es, dass es keinen Push Rush um 17 Uhr gibt?
Cem Catikkas
Wie ich bereits sagte, arbeitet die meiste Zeit jeder an seiner eigenen Niederlassung (es ist sehr unwahrscheinlich, dass Sie genau an dem gleichen Thema arbeiten wie eine andere Person). Während also jeder am Ende des Tages Druck macht, geht es um verschiedene Niederlassungen. Außerdem haben wir bei meiner Arbeit Gleitzeit, so dass es eher ein Ansturm von 16 bis 18 Uhr ist;)
Ed James
1

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.

Rein Henrichs
quelle
Das OP unterscheidet hier zwischen git und hg, aber Ihre Antwort richtet sich an git (der erste Link ist zum Beispiel sehr git-orientiert). Es ist eine richtige Antwort (da die ursprüngliche Fehlinterpretation der Verzweigung in hg durch das OP zur eigentlichen Frage führt), aber es ist erwähnenswert, dass dies auch für hg gilt.
Ed James
@Ed Guter Punkt, aktualisiert, um zu verdeutlichen, dass die Antwort sowohl für Git als auch für Quecksilber gilt.
Rein Henrichs
Siehe das Repository git.git, es ist ein gutes Beispiel für das Zusammenführen mit DVCS. Es gibt viele Zusammenführungspunkte. Es können mehr als 10 temporäre Zweige gleichzeitig vorhanden sein, bevor sie endgültig zum Hauptzweig zusammengeführt werden.
Linquize