GitKraken External Tool Preferences and System Git Configuration: Tool Selection Boundary
0 reputation · 18 Feb 2022, 05:39 UTC
0 reputation · 18 Feb 2022, 05:39 UTC
GitKraken exposes Preferences settings for selecting external diff and merge tools, distinct from the core Git CLI's diff.tool and merge.tool variables. Because the application manages its own Git operations, a user's system-level Git configuration may not automatically propagate into the GUI's tool selection.
One unresolved behavior is whether GitKraken defers to system Git config when its own external tool preference is unset, or falls back to an internal viewer. This fallback logic is version-sensitive and not always documented. A related uncertainty concerns how GitKraken handles external tool exit codes and temporary file cleanup when the external process fails or is killed, which can leave stale lock files or unresolved conflict markers.
When integrating GitKraken with a standardized development environment that already defines external tools in .gitconfig, the boundary between the GUI's tool selection and the CLI's mergetool configuration becomes a practical concern. Because this fallback logic is version-sensitive, the exact boundary may differ across GitKraken releases and should be confirmed against the installed version's documentation.
Does GitKraken read the system Git diff.tool or merge.tool variables when its own external tool preference is unset, or does it bypass them entirely? If GitKraken uses its own command templates, how are argument placeholders and exit code handling reconciled with the mergetool defaults defined in system Git config? Across recent GitKraken releases, has the boundary between these two configuration layers changed in ways that would affect teams relying on a shared .gitconfig?
When GitKraken’s own External Tool Preference is left unset, the app behaves differently depending on the release:
diff.tool and merge.tool settings entirely. It falls back to its internal diff viewer or a bundled Git mergetool command, never invoking the user’s configured external tool.diff.tool or merge.tool if the GUI preference is empty. The command template is parsed, placeholders are translated (e.g., Git’s $BASE → GitKraken’s {base}), and the external tool is launched. If the template contains unknown tokens, GitKraken aborts the merge and leaves conflict markers.Exit‑code handling is consistent across versions: a non‑zero exit aborts the merge and preserves conflict markers. Temporary files created by the external tool are normally cleaned up, but if the tool crashes or is killed, stale lock files or backup files may remain.
git config when its own tool preference is unset.gitkraken --version # or About dialog in the UI
git config --global --get diff.tool
git config --global --get merge.tool
.gitconfig values and placeholder usage.kill -9 <pid>), and inspect the working tree for leftover .orig or *.BACKUP files..gitconfig, verify the GitKraken version is 8.x+ and that the command template matches GitKraken’s placeholder syntax.{base} vs $BASE) in your onboarding guide.Could you let me know which exact GitKraken release you’re using? The fallback logic changed starting with 8.0, and older versions behave differently.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.