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

Re: Suggestion for difftool behaviour during a merge conflict

From
David Aguilar <davvid@gmail.com>
Date
Mar 13, 2013, 22:26 UTC
Message-ID
<CAJDDKr4OLmkPmXA9R3pMh0BksZcYJpfT-nRwwqkF+j6F-wLoBg@mail.gmail.com>
In-Reply-To
<CAFaJEqu8gHSLK5u7v5ZOaJ1XjAhV=F9p46MEo2sDVH4vpXAojA@mail.gmail.com>
On Wed, Mar 13, 2013 at 11:48 AM, Øystein Walle <oystwa@gmail.com> wrote:
Show 28 quoted lines
> When a merge is ongoing and there are conflicts, 'git difftool' will
> output the exact same --cc-style diff output as 'git diff' will without
> further explanation. This has lead to some confusion: A couple of weeks
> ago a person asked on #git why his difftool wasn't working. After a long
> while we realized difftool's behaviour after invocations such as 'git
> difftool HEAD~ HEAD' would work as expected but 'git difftool' "simply
> wouldn't".
>
> With that in mind I have three suggestions on improving 'git difftool':
>
>  - Show a three-way diff between the versions (local, remote, merge)
>    using the user's configured difftool. Diffing against the version
>    containing the markers will generate some extra noise in the difftool
>    and might be confusing, but it's similar in behaviour to how 'git
>    difftool' normally works.
>
>  - Prompt the user if they want to launch 'git mergetool' instead since
>    a merge is ongoing. Reasonable but it might be awkward if the user is
>    asked whether the conflict was resolved or not when all they wanted
>    to do was to visually diff something.
>
>  - Add a notice to stderr saying that a --cc-style diff output is shown
>    instead; or document the behaviour in the man page. Definitely the
>    simplest option.
>
> I'm willing to try to take a stab at either of these but I wanted to
> bring it up first. There is of course an implicit fourth option which is
> to do nothing, and that I'm wrong about this :)
Thanks for bringing this up.

I think the simplest first step would be to detect this state, print a message saying that difftool cannot be used during a merge, and suggest mergetool instead.

We would need to be careful to still allow difftool <ref> <ref> and only trigger this behavior when the cc-style diff would be printed.

I have a feeling that this happens deep in git-diff. git-difftool--helper is driven by git-diff via the GIT_EXTERNAL_DIFF mechanism, and that mechanism is probably not triggered when in this state, so we may need to add another breadcrumb that we can build upon.

> Best regards,
> Øystein Walle
cheers,
-- 
David
Previous: Øystein Walle
Message 2 of 2 in “Suggestion for difftool behaviour during a merge conflict”
  1. Øystein WalleMar 13, 2013
  2. David AguilarMar 13, 2013

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.