8 votes

Comment utiliser le mergetool de Xcode 4 de manière autonome ?

Je dois parfois faire des fusions git sur la console. Jusqu'à présent, pour résoudre les conflits, j'utilisais FileMerge de Xcode 3 (vous pouvez l'ouvrir sur la console en utilisant la commande 'opendiff'). Si des conflits apparaissent, j'utilise 'git mergetool' qui invoque automatiquement opendiff pour chacun des fichiers en conflit.

Cependant, Xcode 4 propose un composant mergetool beaucoup plus agréable pour résoudre les conflits. Je crois que ce composant fait partie de l'exécutable de Xcode 4, plutôt que d'être autonome. Il vous permet de prévisualiser le fichier fusionné, et de modifier directement le code fusionné au cas par cas, ce qui rend la fusion de conflits complexes incroyablement rapide et satisfaisante.

Existe-t-il un moyen d'utiliser le mergetool de Xcode 4 en invoquant 'git mergetool' à partir du terminal ?

Je ne trouve pas d'exécutable pour cet outil dans le bundle de Xcode 4. Tout hack permettant d'y parvenir serait le bienvenu.

4voto

Eltariel Points 895

Opendiff prend deux arguments de nom de fichier, et un paramètre --ancestor avec un troisième nom de fichier, pour produire un diff à trois voies, et un paramètre --merge pour dire le fichier de sortie à utiliser pour la résolution du conflit.

Alors vas-y :

[mergetool "opendiff"]
    cmd = "opendiff \"$LOCAL\"  \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
    tool = opendiff

Cela devrait permettre à git d'utiliser opendiff comme outil de fusion, lorsqu'il y a des conflits de fusion.

Cela dit, je préfère TRES nettement DiffMerge de SourceGear DiffMerge, qui est un outil gratuit de diff et de fusion à trois qui fait une bien meilleure résolution des conflits, orientée vers les mots. Et dans la documentation de DiffMerge, il y a ce qu'il faut dire à git pour en faire l'outil de diff et de fusion par défaut.

0voto

Vous pouvez éditer dans l'éditeur de texte (très basique) de FileMerge en ouvrant le panneau d'édition -- qui est fermé par défaut. Pour ouvrir l'éditeur dans FileMerge, faites glisser le point sous la colonne centrale de différences vers le haut pour ouvrir le panneau de l'éditeur.

-1voto

macek Points 161

Cela a fini par fonctionner pour moi

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X