git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: trustExitCode doesn't apply to vimdiff mergetool

From
Jeff King <peff@peff.net>
Date
Nov 27, 2016, 05:08 UTC
Message-ID
<20161127050818.rmjpvha64y4wosq2@sigill.intra.peff.net>
In-Reply-To
<CAD03jn5PAZcFeesaq2osjo7cYd1frWZeN0odNqTh+AMxSEmLgQ@mail.gmail.com>
On Sat, Nov 26, 2016 at 09:44:36PM -0500, Dun Peal wrote:
Show 19 quoted lines
> I'm using vimdiff as my mergetool, and have the following lines in
> ~/.gitconfig:
> 
> [merge]
>     tool = vimdiff
> [mergetool "vimdiff"]
>     trustExitCode = true
> 
> 
> My understanding from the docs is that this sets
> mergetool.vimdiff.trustExitCode to true, thereby concluding that a
> merge hasn't been successful if vimdiff's exit code is non-zero.
> 
> Unfortunately, when I exit Vim using `:cq` - which returns code 1 -
> the merge is still presumed to have succeeded.
> 
> Is there a way to accomplish the desired effect, such that exiting
> vimdiff with a non-zero code would prevent git from resolving the
> conflict in the merged file?

I don't use mergetool myself, but peeking at the code, it looks like trustExitCode is used only for a "user" tool, not for the builtin tool profiles. That sounds kind of confusing to me, but I'll leave discussion of that to people more interested in mergetool.

However, I think you can work around it by defining your own tool that runs vimdiff:

  git config merge.tool foo
  git config mergetool.foo.cmd 'vimdiff "$LOCAL" "$BASE" "$REMOTE" "$MERGED"'
  git config mergetool.foo.trustExitCode true

Though note that the builtin vimdiff invocation is a little more complicated than that. You may want to adapt what is in git.git's mergetools/vimdiff to your liking.

-Peff
Previous: Dun PealNext: Dun Peal
Message 2 of 8 in “trustExitCode doesn't apply to vimdiff mergetool”
  1. Dun PealNov 27, 2016
  2. Jeff KingNov 27, 2016
  3. Dun PealNov 27, 2016
  4. Jeff KingNov 27, 2016
  5. David AguilarNov 28, 2016
  6. Jeff KingNov 28, 2016
  7. David AguilarNov 28, 2016
  8. Junio C HamanoNov 28, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.