2009-04-28 15 views
33

J'ai un conflit fusion, en utilisant Mercurial 1.0.2:Comment résoudre les conflits de fusion dans Mercurial (v1.0.2)?

merging test.h 
warning: conflicts during merge. 
merging test.h failed! 
6 files updated, 0 files merged, 0 files removed, 1 files unresolved 
There are unresolved merges, you can redo the full merge using: 
    hg update -C 19 
    hg merge 18 

Je ne peux pas comprendre comment résoudre ce problème. résultats de recherche Google demander d'utiliser:

hg resolve 

mais pour une raison quelconque mon Mercurial (v1.0.2) ne dispose pas d'une commande de résolution:

hg: unknown command 'resolve' 

Comment puis-je résoudre ce conflit?

+0

Je pense que vous devez marquer une réponse différente comme la bonne .. – Lipis

Répondre

13

Valable pour hg < V1.1 ne

Il n'y a pas besoin d'appeler des hg commandes. Contrairement à svn, Mercurial ne suit pas les fichiers en conflit. Si vous appelez hg status, vous verrez que le fichier est simplement marqué comme modifié. Il suffit de fixer le fichier à la main et de le valider.

+0

Donc, il semble que Mercurial déplacé ma copie locale à test.h.orig et test.h est maintenant de l'autre chef ... est-il façon d'empêcher la création du fichier .orig afin qu'il ne soit pas ajouté accidentellement? – lajos

+0

Je ne suis pas sûr que ce soit possible, mais vous pouvez ajouter * .orig à votre fichier .hgignore. – avakar

+16

Si vous éditez simplement le fichier puis que vous le validez, il est possible qu'il ne soit pas reconnu comme une fusion des deux branches, simplement un nouveau commit sur votre travail. Je pense que vous devez corriger le fichier à la main, puis faites ** hg resolve -m test.h ** pour marquer le fichier comme fusionné. –

10

Le suivi des conflits a été introduit dans Mercurial 1.1, qui est une version plus récente que vous utilisez (vous devriez vraiment mettre à jour, Mercurial 1.1 a été publié en décembre 2008). Dans cette version, vous avez obtenu la commande resolve qui fonctionne de manière similaire à svn resolve.

Comme je me souviens, Mercurial laisserait fusionner des marqueurs (les lignes <<<< et >>>>) dans votre fichier quand il y a un conflit, sauf si vous avez configuré un merge tool. Cela s'applique également aux versions les plus récentes - Je n'ai pas d'outil de fusion configuré et j'obtiens les marqueurs de fusion en cas de conflit. Je peux ensuite corriger manuellement le fichier et le marquer résolu avec hg resolve.

75

Pour mettre en évidence une réponse dans un commentaire pour Hg 1.1+:

Pour Hg 1.1+ corriger le fichier à la main, puis faire

hg resolve -m test.h 

pour marquer le fichier comme fusionné.

+0

dois-je supprimer manuellement les fichiers .orig? –

+0

même question. Que faire avec les fichiers .orig alors? –

+1

Je viens de les supprimer manuellement –