Skip to content

Pass --no-ext-diff to internal git diff in standalone mode#2167

Open
xfocus3 wants to merge 1 commit into
dandavison:mainfrom
xfocus3:fix/standalone-no-ext-diff-2046
Open

Pass --no-ext-diff to internal git diff in standalone mode#2167
xfocus3 wants to merge 1 commit into
dandavison:mainfrom
xfocus3:fix/standalone-no-ext-diff-2046

Conversation

@xfocus3
Copy link
Copy Markdown

@xfocus3 xfocus3 commented May 30, 2026

Description

Closes #2046.

When delta is invoked as delta file1 file2, it builds and runs git diff --no-index --color ... and then colorizes git's diff output. That invocation reads the user's git config, so a configured diff.external (e.g. external = difft) takes over and delta ends up paging the external differ's output instead of producing its own — even when you're not inside a git repository.

Fix

Pass --no-ext-diff to the internal git diff invocation. This is git's canonical flag to ignore any configured diff.external for that command, so delta always receives git's own diff to format. The plain diff fallback path (used on git < 2.42 with process substitution) is unaffected since it doesn't read git config.

Verification

With diff.external configured to a marker script, before this change delta emitted the external differ's output; after it, delta produces its own diff and the external command is not invoked:

$ git config --global diff.external /tmp/fakediff.sh
$ delta a.txt b.txt
# before: output of /tmp/fakediff.sh
# after:  delta's own colorized diff (fakediff.sh not called)

cargo test (155 passed), cargo clippy, and cargo fmt --check all pass.

When invoked as `delta file1 file2`, delta runs `git diff --no-index` and
colorizes the result. That invocation honored the user's `diff.external`
git config (e.g. `difft`), so the external differ's output was used instead
of delta's, even outside any git repository.

Pass `--no-ext-diff` so delta always gets git's own diff output to format.

Closes dandavison#2046
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 Affected by git's diff config

1 participant