Comment configurer kdiff3 au lieu d'émerger en tant que git mergetool?
j'ai Git sur mac OSX Snow Leopard et j'ai essayé d'éditer mon outil merge and diff pour utiliser kdiff3 au lieu d'emerge.
mais quand j'essaie de l'utiliser, il ne lance pas l'interface graphique de kdiff et me maintient avec une interface basée cmd.
mon réglage dans gitconfig sont:
[merge]
tool = kdiff3
[mergetool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
il y a évidemment quelque chose qui manque mais qu'ai-je fait de mal ?
2 réponses
les versions récentes de Git ont intégré le support pour kdiff3
, il n'est donc pas nécessaire de le configurer manuellement en utilisant les paramètres génériques cmd et args . Au lieu de cela faire:
$ git config --global merge.tool kdiff3
et si kdiff3
n'est pas dans votre chemin environnement aussi faire:
$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3
Cela fait git mergetool
lancement kdiff3
. Notez que il n'y a aucun moyen pour configurer Git en automatiquement lancez votre outil de fusion après une fusion manuelle qui a des conflits.
dans le cas où vous voulez vraiment voir comment Git appelle kdiff3
en interne, jetez un oeil à la configuration mergetool intégrée pour kdiff3 .
Edit : pour Beyond Compare 4 , qui supporte maintenant Mac OS X, simplement remplacer kdiff3
par bc3
(Oui, "3") et ajuster le chemin dans les lignes ci-dessus. En commençant par Git 2.2.0, vous pourrez utiliser bc
comme alias pour bc3
de sorte que vous n'ayez pas à vous soucier du numéro de version.
les versions récentes de Git ont intégré le support pour kdiff3
Oui, mais seul Git 2.12 (Q1 2017) permettra à ces outils intégrés de faire confiance à leur code de sortie.
Voir commettre 2967284 , commettre 7c10605 (29 Novembre 2016) par David Aguilar ( davvid
) .
(fusionné par Junio CA Hamano -- gitster
-- in commit c4a44e2 "15190920", 16 Dec 2016)
mergetool
: l'honneurmergetool.$tool.trustExitCode
pour les outils intégrésles outils de fusion intégrés contiennent une hypothèse codée de manière rigide sur la question de savoir si le code de sortie d'un outil peut être fiable pour déterminer le succès ou l'échec d'une fusion.
Les outils dont les codes de sortie ne sont pas fiables contiennent des appels verscheck_unchanged()
dans leurs fonctionsmerge_cmd()
.un problème avec cela est que la configuration trustExitCode n'est pas prise en compte pour les outils intégrés.
enseigner les outils intégrés pour honorer la configuration
trustExitCode
.
(voir kdiff3
)
étendre
run_merge_cmd()
de sorte qu'il est responsable d'appelercheck_unchanged()
lorsque le code de sortie d'un outil ne peut pas être digne de confiance.
Supprimez les appelscheck_unchanged()
des scriptlets car ils ne sont plus responsables de l'appeler.