mbox series

[v10,0/3] mergetool: add hideResolved configuration (was automerge)

Message ID 20210130054655.48237-1-seth@eseth.com (mailing list archive)
Headers show
Series mergetool: add hideResolved configuration (was automerge) | expand

Message

Seth House Jan. 30, 2021, 5:46 a.m. UTC
Changes since v9:

- Rename automerge to hideResolved.

  Several mergetools have a feature that they call "automerge", "auto
  merge", or "auto solve" and Git has a `mergetool.meld.useAutoMerge`
  flag so I think it's better to avoid potential confusion. Plus Git
  already performed the merge and this doesn't do any additional
  merging, instead it just "hides" conflicts that Git already resolved.

- Reworked and consolidated commits and commit messages.

- Add preference hierarchy.

  Followed Junio's suggestions:
  https://lore.kernel.org/git/xmqqpn2ivcc1.fsf@gitster.c.googlers.com/

- Switch from sed to two merge-file calls.

  Thanks to everyone who helped with all the suggestions and fixup!s to
  get sed working cross-platform. Unfortunately there's not a great,
  portable method to preserve carriage returns when using both autocrlf
  and MSYS2: https://lore.kernel.org/git/20210120232447.GA35105@ellen/

  Although calling merge-file twice is (much) less efficient than sed
  it's still fairly quick for small files. For large files it's likely
  opening those files in a mergetool will have a higher overhead than
  the merge-file invocations:
  https://lore.kernel.org/git/20210122010902.GA48178@ellen/

  A potential future optimisation could be to augment the
  C implementation (xmerge.c ?) with a flag to write two files as the
  merge is being performed instead of writing conflict markers.

- Kept `initialize_merge_tool` wrapper.

  I updated the commit message where `initialize_merge_tool` is
  introduced to try and better explain my thinking for not simply
  exposing `setup_tool` instead. I'm happy to switch that if anyone
  still feels it should be switched.

Seth House (3):
  mergetool: add hideResolved configuration
  mergetool: break setup_tool out into separate initialization function
  mergetool: add per-tool support and overrides for the hideResolved
    flag

 Documentation/config/mergetool.txt   | 15 +++++++++++++++
 Documentation/git-mergetool--lib.txt |  4 ++++
 git-difftool--helper.sh              |  6 ++++++
 git-mergetool--lib.sh                | 11 ++++++++---
 git-mergetool.sh                     | 26 ++++++++++++++++++++++++++
 t/t7610-mergetool.sh                 | 18 ++++++++++++++++++
 6 files changed, 77 insertions(+), 3 deletions(-)