On Wed, Mar 13, 2013 at 11:48 AM, Øystein Walle <oys...@gmail.com> wrote:
> 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
> 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
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html