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é.)
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:
- Ouvrir Xcode > Préférences > Locations
- 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.)
- 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 .
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
par ici, SourceTree ouvre FileMerge comme prévu.
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.
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
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