FileMerge quitte immédiatement après le lancement de SourceTree

j'utilise régulièrement Atlassian SourceTree (sur Mac OS X) pour lancer FileMerge pour résoudre les conflits de fusion git. A l'improviste , il a cessé de fonctionner: quand je clique sur le bouton droit de la souris et que je sélectionne Resolve Conflicts > Launch External Merge Tool , FileMerge lance, crée ses fichiers intermédiaires, puis sort immédiatement. SourceTree interprète cela comme le processus de fusion étant complet.

Quel est le problème et comment puis-je le corriger?

je note qu'une question précédente " SourceTree filemerge quitte immédiatement et crée 4 fichiers. Comment résoudre ce problème? ' n'aborde pas ce scénario particulier (pour L'un, il est dit que FileMerge quitte le titre, mais dans le corps il est dit que FileMerge affiche /dev/null comme l'un des panneaux. De plus, mon conflit de fusion n'est pas dû à un fichier supprimé.)

23
demandé sur Community 2015-09-23 03:14:29

5 réponses

pour diagnostiquer le problème, j'ai lancé opendiff depuis le Terminal. J'ai reçu l'erreur suivante:

xcode-select: erreur: l'outil de opendiff' exige Xcode, mais active de développeurs répertoire '/Library/Développeur/CommandLineTools' est l'un des outils de ligne de commande exemple

à résoudre:

  1. Ouvrir Xcode > Préférences > Locations
  2. Cliquez sur la case déroulante à côté de Command Line Tools et sélectionnez votre version Xcode actuelle. (C'était vide pour moi car j'avais récemment installé Xcode sur un nouveau Mac.)

Command Line Tools

  1. Exécuter opendiff dans le Terminal de nouveau, et l'erreur ci-dessus n'apparaissent plus.

maintenant FileMerge ouvrira correctement de SourceTree lorsque vous cliquez sur lancer outil de fusion externe .

59
répondu ChrisJF 2017-10-31 19:26:41

pour moi, SourceTree n'a même pas lancé FileMerge. En cliquant sur lancer outil de fusion externe rien ne s'est passé.

de plus, l'exécution opendiff dans le Terminal a fonctionné comme prévu:

$ opendiff
opendiff[64176:5561154] too few arguments
opendiff[64176:5561154] usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]

ce qui m'a aidé était configurer manuellement SourceTree pour utiliser FileMerge via la commande opendiff avec les arguments suivants: $LOCAL $REMOTE -ancestor $BASE -merge $MERGED

SourceTree manually configure to use opendiff

par ici, SourceTree ouvre FileMerge comme prévu.

8
répondu Tom Kraina 2017-07-18 12:25:56

si Xcode s'est récemment mis à jour, vous devrez peut-être accepter les nouvelles conditions de licence. Si vous n'avez pas accepté les termes de la licence, FileMerge (lors du lancement à partir de SourceTree) cessera immédiatement.

pour vérifier cela, ouvrez un shell et exécutez comme votre utilisateur habituel:

$ opendiff

Si la licence est le problème, il vous le dira. Pour accepter les nouvelles conditions de licence, vous devrez lancer open diff en utilisant sudo :

$ sudo opendiff

après avoir accepté les termes de la licence, vous pouvez maintenant réessayer Le lancement de FileMerge depuis SourceTree en utilisant Resolve Conflicts > Launch External Merge Tool . FileMerge devrait se lancer et se comporter normalement.

6
répondu Greg Kopff 2015-09-23 00:14:29

Cela fonctionne aussi pour résoudre le message "xcode-select: erreur: l'outil de opendiff' exige Xcode, mais active de développeurs répertoire '/Library/Développeur/CommandLineTools' est l'un des outils de ligne de commande exemple" :

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
4
répondu fabe 2017-09-07 10:31:30

cela a aidé: https://gist.github.com/kylefox/4512777

Dites-système lorsque Xcode utilitaires de vivre:

sudo xcode-select-interrupteur /Applications/Xcode.app/Contents/Développeur

Set "opendiff" comme valeur par défaut mergetool dans le monde:

git config --global de fusion.outil opendiff

0
répondu user3027622 2018-09-07 11:00:46