2010-04-07 9 views
20

Ich habe eine neue Niederlassung mit diesem Befehl: hg Zweig new_branchBranching und Remote-Köpfe in Mercurial

Nach den ersten der neuen Niederlassung verpflichten, die Standardzweig inaktiv wird. Wenn dies gedrückt wird, hat das zentrale Repository nur einen Kopf, der zu dem neuen Zweig gehört.

Als mein Kollege seine Commits auf dem Standard-Zweig schiebt, wird er diesen Fehler:

pushing to ssh://... 
searching for changes 
abort: push creates new remote heads! 
(did you forget to merge? use push -f to force) 

Gibt es etwas Schlechtes über die Push zwingen? Warum sind entfernte Köpfe schlecht?

Wie arbeiten Sie remote in getrennten Zweigen und pushen zu einem Repository?

Antwort

18

Remote-Köpfe sind schlecht, weil Sie im Grunde die Anstrengung der Verschmelzung auf eine andere Person drängen. Diese Nachricht soll verhindern, dass Personen versehentlich entfernte Köpfe eingeben, und ihnen sagen, dass sie zuerst zusammenführen sollen, bevor sie drücken.

In diesem Fall haben Sie jedoch einen benannten Zweig erstellt, was bedeutet, dass Sie absichtlich einen neuen Kopf eingeben und freigeben, und Sie können die Warnung als informativ verwerfen. Verwenden Sie hg push --new-branch, um es zu erzwingen (oder -f vor Version 1.6).

+2

Sie fügen eine neue Zweigoption hinzu, die Sie in Zukunft als sicherere Alternative zu --force verwenden können. Die Commit-Fehlermeldung sollte ebenfalls verbessert werden. –

+0

sie haben es bereits hinzugefügt, obwohl es nicht funktioniert für mich auf 1.8.1 (die Commit-Fehlermeldung ist immer noch das gleiche). –

+0

Ja, es ist seit Mercurial 1.6 verfügbar. Ich habe die Antwort aktualisiert, um das zu reflektieren. –

4

Neben der Aufgabe der Verschmelzung mit jemand anderem, sind Remote-Köpfe auch schlecht, da sie Verwirrung verursachen können. Leute, die einen neuen Klon erstellen, wissen nicht, von welchem ​​Kopf sie ausgehen sollen, wenn es mehrere gibt. Um die Sache noch schlimmer zu machen: Ein neuer Klon wird auf den neuesten Kopf des Standardzweiges aktualisiert, und dieser Kopf ändert sich von einem Moment zum nächsten, wenn Leute Änderungen an den verschiedenen Köpfen vornehmen.

Mit genannt Zweigen oder getrennte Klone Hilfe hier: ein neuer Klon wird aktualisiert, immer an die Spitze des Standardzweiges und die Leute können dann zu einem anderen Zweig aktualisieren je nach Bedarf.