2009-08-20 10 views

Répondre

27

Comme décrit dans le hg wiki, cela a fonctionné pour moi avec différentes versions de hg:

  • Créer un script quelque part dans votre $PATH, par exemple dans /usr/local/bin:
$ vim /usr/local/bin/opendiff-w 

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 
  • Ajouter les sections suivantes à votre ~/.hgrc:
[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Maintenant, vous pouvez l'utiliser comme $hg opendiff.

+9

** Pour les autres **:' opendiff-w' est le fichier de script qui finit par être référencé dans le. fichier hgrc (ce n'était pas trop évident pour moi). Le premier bloc de code est le contenu. Aussi, changé les permissions pour ajouter exécuter 'chmod + x opendiff-w' –

+4

** Pour les autres: ** Quelque chose qui n'était pas évident pour moi: Vous devez maintenant exécuter' $ hg opendiff' (pour voir la sortie dans 'FileMerge '); '$ hg diff' vous montrera toujours la sortie sur la ligne de commande –

+5

** Pour les autres: ** ... et vous devez activer l'extension extdiff dans' ~/.hgrc' –

2

Mise à jour: Le wiki Mercurial a un page about FileMerge. Lisez ça en premier.

Je n'ai pas essayé d'utiliser FileMerge mais un aperçu général pourrait aider. La plupart de ce que vous voulez savoir est décrit sur la page MergeProgram du wiki de Mercurial. La version courte est vos choix typiques sont:

Définissez la variable d'environnement HGMERGE pour pointer sur l'outil de fusion souhaité.

ou, ajoutez ce qui suit à votre .hgrc:

[ui] 
merge = /path/to/toolname 

[merge-tools] 
toolname.args = $base $local $other 

La clé est qu'un outil de fusion doit prendre trois arguments: la révision de base, vos changements locaux et les changements de l'autre branche. Vous utilisez la première configuration pour spécifier l'outil et la seconde pour spécifier comment il prend les arguments.

0

Je ne l'ai pas essayé, mais je parie que vous devez pointer tout le chemin vers l'exécutable FileMerge, pas seulement l'ensemble de l'application.

Alors:

[ui] 
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge 
+0

J'ai essayé, ce n'est pas si simple. –

+0

Je l'ai essayé aussi, j'ai: 'FileMerge [51550: 30f] Impossible de créer la connexion pour root' – jammon

1

Aucune de la documentation liée n'a fonctionné pour moi sans modifications; finalement ce que j'ai fini par faire était une combinaison de the official instructions et "Using Vim comme le programme filemerge" de https://www.mercurial-scm.org/wiki/TipsAndTricks. J'ai créé le script opendiff-w décrit dans this answer (bien que je l'ai nommé hgvdiff), et il faut mettre dans mon .hgrc:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = /usr/local/bin/hgvdiff 

[merge-patterns] 
** = filemerge 

[merge-tools] 
filemerge.executable = /usr/local/bin/hgvdiff 
filemerge.args = $local $other -ancestor $base -merge $output 
filemerge.checkchanged = true 
filemerge.gui = true 

[extensions] 
extdiff = 

Ceci est modérément fonctionnel, mais il effectue parfois le chèque si un fichier a été a changé prématurément, conduisant à un groupe de:

output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged 
was merge successful (yn)? n 

lorsque vous fermez FileMerge.

0

Voici comment je l'ai fixé:

Créé /usr/local/bin/opendiff-w Rempli de:

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 

puis a couru la commande: sudo chmod +x /usr/local/bin/opendiff-w

ensuite modifié ~/.hgrc avec l'ajout suivant:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = /usr/local/bin/opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Puis j'ai couru le followi commande ng pour vérifier wether il a travaillé: hg opendiff

Cependant, je suis l'erreur suivante:

exception raised trying to run FileMerge: launch path not accessible 

Pour réparer j'ai couru la commande suivante:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/ 

Cela devrait maintenant fonctionner et ouvrez FileMerge.

============================================== ======================

Si vous utilisez TorsoiseHg pour Mac, la seule chose que vous devez faire maintenant pour travailler avec FileMerge est pour choisir filemerge à partir des outils de fusion/diff détectés lorsque la fenêtre de résolution de conflit apparaît et choisissez Tool Resolve.

enter image description here

Hope this helps.