Skip to content

Commit

Permalink
mergetools/meld: make usage of --output configurable and more robust
Browse files Browse the repository at this point in the history
Older versions of meld listed --output in `meld --help`.
Newer versions only mention `meld [OPTIONS...]`.
Improve the checks to catch these newer versions.

Add a `mergetool.meld.hasOutput` configuration to allow
overriding the heuristic.

Reported-by: Andrey Novoseltsev <novoselt@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
davvid authored and gitster committed Oct 16, 2014
1 parent 3c2dc76 commit b12d045
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
9 changes: 9 additions & 0 deletions Documentation/config.txt
Expand Up @@ -1754,6 +1754,15 @@ mergetool.<tool>.trustExitCode::
if the file has been updated, otherwise the user is prompted to
indicate the success of the merge.

mergetool.meld.hasOutput::
Older versions of `meld` do not support the `--output` option.
Git will attempt to detect whether `meld` supports `--output`
by inspecting the output of `meld --help`. Configuring
`mergetool.meld.hasOutput` will make Git skip these checks and
use the configured value instead. Setting `mergetool.meld.hasOutput`
to `true` tells Git to unconditionally use the `--output` option,
and `false` avoids using `--output`.

mergetool.keepBackup::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
Expand Down
9 changes: 7 additions & 2 deletions mergetools/meld
Expand Up @@ -18,13 +18,18 @@ merge_cmd () {
check_unchanged
}

# Check whether 'meld --output <file>' is supported
# Check whether we should use 'meld --output <file>'
check_meld_for_output_version () {
meld_path="$(git config mergetool.meld.path)"
meld_path="${meld_path:-meld}"

if "$meld_path" --help 2>&1 | grep -e --output >/dev/null
if meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
then
: use configured value
elif "$meld_path" --help 2>&1 |
grep -e '--output=' -e '\[OPTION\.\.\.\]' >/dev/null
then
: old ones mention --output and new ones just say OPTION...
meld_has_output_option=true
else
meld_has_output_option=false
Expand Down

1 comment on commit b12d045

@h2o64
Copy link

@h2o64 h2o64 commented on b12d045 Jun 20, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since ubuntu 15.04 meld doesn't work with git anymore (right window and center window are the same, I need to re-open the center file to fix it)...
I'm using a compiled from source meld and 'melp --help' show '--outpout' http://pastebin.com/edRMqzQe
Maybe this commit has something to do with that ?

Please sign in to comment.