2009-10-20 14 views
15
  1. I initialized ein Mercurial-Projekt auf Machine A, committed meine Änderungen und uploaded sie zu einer Remote-Repository.Das Verschieben in das Remote-Repository nach der Zusammenführung "erstellt neue Remote-Köpfe" - ist das schlecht?

  2. Dann cloned ich das Repository auf Machine B, committed einige zusätzliche Änderungen und uploaded sie auf den gleichen Remote-Repository.

In beiden Fällen hochgeladen ich die Änderungen mit dem gleichen Befehl:

hg push https://username:[email protected]/user/repository/ 

Jetzt auf Maschine A Ich bin wieder da und ich habe pull ** ed aus der Remote-Repository und * * ** merg ed irgendwelche Änderungen zwischen den beiden den Differenzmengen ** KDiff3 GUI-Werkzeug mit den Befehlen:

hg pull 
hg merge 
hg commit 

Ho wever, wenn ich versuche, um die neuesten Änderungen von Maschine A drücken zurück zur Remote-Repository nach diesem Zuge und fusionieren, bekomme ich diese Meldung:

hg push https://username:[email protected]/user/repository/ 
pushing to https://username:[email protected]/user/repository/ 
searching for changes 
abort: push creates new remote heads! 
(did you forget to merge? use push -f to force) 

Warum es nicht sagen: „Hast du vergessen, zu fusionieren“? - Ich habe die Zusammenführung abgeschlossen.

Ist es schlimm, den Push zu erzwingen und "neue Remote Heads" zu erstellen?

Wenn ja, wie vermeide ich das?

UPDATE:

I ran "hg merge" wieder und bekam diese Ausgabe:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved 
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon 

Also lief ich 'hg up --clean' und berichtet:

6 files updated, 0 files merged, 1 files removed, 0 files unresolved 

Jetzt, wenn ich schreibe 'hg heads', heißt es:

changeset: 11 
tag:   tip 
parent:  9 
user:  eggdrop 
date:  Tue Oct 20 16:27:44 2009 -0400 
summary:  Machine A after merge 

changeset: 10 
parent:  7 
user:  chickensoup 
date:  Thu Oct 15 03:27:23 2009 -0400 
summary:  Machine B changes to be pulled onto Machine A 
+0

Haben Sie die Zusammenführung festgelegt? – avakar

+0

Ja, ich habe alle Unterschiede gelöst und die Zusammenführung übernommen. Also, wenn ich "hg status" eintippe gibt es keine Ausgabe, weil alles lokal eingecheckt wurde. – eggdrop

Antwort

9

Sie liefen hg up --clean. Das bedeutet, dass Sie die Zusammenführung rückgängig gemacht haben, was bedeutet, dass Sie noch zusammenführen müssen. Sie haben eine nicht aufgelöste Datei beim Zusammenführen. Ihre Fehlermeldung Re-read:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved 
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon 

Sie müssen den merge Konflikt lösen und dann die Zusammenführung mit hg resolve abzuschließen. Dann haben Sie Ihre beiden Köpfe erfolgreich zusammengeführt.

Und um Ihre Frage zu beantworten: nein, es ist nicht schlecht, zwei Remote-Köpfe zu haben. Es bedeutet nur, dass Sie sie (vorzugsweise ASAP) zusammenführen müssen, bevor Sie etwas anderes auf den Remote-Server schieben.

So zu beheben, nur hg merge ausführen, lösen Sie den einen Konflikt, dann hg resolve ausführen.

2

Zuerst: Zeigen Sie Ihre Änderungen mit hg log an. Im Folgenden habe in meinem Fall nicht helfen:

  • hg pull und hg merge (vor dem Check gegen hg eingehenden ziehen)
  • oder: hg pull --rebase

Aber das half.

hg merge [revision] 

fand ich, dass ich explizit einige Revisionen zusammenführen musste, die wie Köpfe aussah.

+0

+1 - musste dazu auch –

Verwandte Themen