]> git.ipfire.org Git - thirdparty/git.git/commit
mergetool: add hideResolved configuration
authorSeth House <seth@eseth.com>
Tue, 9 Feb 2021 20:07:10 +0000 (13:07 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Feb 2021 22:09:16 +0000 (14:09 -0800)
commit98ea309b3fa4818c1591b9071925ccb22c2e786b
tree2fbdc73351ffb31035a91f00e5b1ea0fb83fe502
parent6d3ef5b467eccd2769f1aa1c555d317d3c8dc707
mergetool: add hideResolved configuration

The purpose of a mergetool is to help the user resolve any conflicts
that Git cannot automatically resolve. If there is a conflict that must
be resolved manually Git will write a file named MERGED which contains
everything Git was able to resolve by itself and also everything that it
was not able to resolve wrapped in conflict markers.

One way to think of MERGED is as a two- or three-way diff. If each
"side" of the conflict markers is separately extracted an external tool
can represent those conflicts as a side-by-side diff.

However many mergetools instead diff LOCAL and REMOTE both of which
contain versions of the file from before the merge. Since the conflicts
Git resolved automatically are not present it forces the user to
manually re-resolve those conflicts. Some mergetools also show MERGED
but often only for reference and not as the focal point to resolve the
conflicts.

This adds a `mergetool.hideResolved` flag that will overwrite LOCAL and
REMOTE with each corresponding "side" of a conflicted file and thus hide
all conflicts that Git was able to resolve itself. Overwriting these
files will immediately benefit any mergetool that uses them without
requiring any changes to the tool.

No adverse effects were noted in a small survey of popular mergetools[1]
so this behavior defaults to `true`. However it can be globally disabled
by setting `mergetool.hideResolved` to `false`.

[1] https://www.eseth.org/2020/mergetools.html
    https://github.com/whiteinge/eseth/blob/c884424769fffb05d87afb33b2cf80cecb4044c3/2020/mergetools.md

Original-implementation-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Seth House <seth@eseth.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/mergetool.txt
git-mergetool.sh
t/t7610-mergetool.sh