J'ai Git sur mac OSX Snow Leopard et j'ai essayé de modifier mon outil de fusion et de diff pour utiliser kdiff3 au lieu d'émerger.
Mais lorsque j'essaie de l'utiliser, il ne lance pas l'interface graphique de kdiff et me garde avec une interface basée sur cmd.
Mes paramètres 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 manque évidemment quelque chose, mais qu'est-ce que j'ai fait de mal?
Les versions récentes de Git ont un support intégré pour kdiff3
, il n'est donc pas nécessaire de le configurer manuellement à l'aide des paramètres génériques cmd et args. Faites plutôt:
$ git config --global merge.tool kdiff3
Et si kdiff3
n'est pas dans votre [~ # ~] chemin [~ # ~] environnement aussi:
$ 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 sur automatiquement lancez votre outil de fusion après une fusion manuelle qui a des conflits.
Si vous voulez vraiment voir comment Git appelle kdiff3
en interne, jetez un œil à la configuration intégrée du mergetool pour kdiff .
Modifier : Pour Beyond Compare 4 , qui prend désormais également en charge Mac OS X, échangez simplement kdiff3
avec bc3
(oui, "3") et ajustez le chemin dans les lignes ci-dessus. À partir de Git 2.2.0, vous pourrez utiliser bc
comme alias pour bc3
pour que vous n'ayez pas à vous soucier du numéro de version.
Les versions récentes de Git ont un support intégré pour kdiff3
Oui, mais seul Git 2.12 (T1 2017) permettra à ces outils intégrés de faire confiance à leur code de sortie.
Voir commit 2967284 , commit 7c10605 (29 novembre 2016) par David Aguilar (davvid
) .
(Fusionné par Junio C Hamano - gitster
- in commit c4a44e2 , 16 décembre 2016)
mergetool
: honorermergetool.$tool.trustExitCode
pour les outils intégrésLes outils de fusion intégrés contiennent une hypothèse codée en dur quant à la fiabilité ou non du code de sortie d'un outil pour déterminer le succès ou l'échec d'une fusion.
Les outils dont les codes de sortie ne sont pas approuvés contiennent des appels àcheck_unchanged()
dans leurs fonctionsmerge_cmd()
.Un problème avec cela est que la configuration trustExitCode n'est pas respectée pour les outils intégrés.
Apprenez aux outils intégrés à respecter la configuration
trustExitCode
.
(Voir kdiff3
)
Étendez
run_merge_cmd()
pour qu'il soit responsable d'appelercheck_unchanged()
lorsque le code de sortie d'un outil ne peut pas être approuvé.
Supprimez les appelscheck_unchanged()
des scriptlets car ils ne sont plus responsables de l'appel.