From: Jonathan Nieder <jrnieder@gmail.com>
To: David Aguilar <davvid@gmail.com>
Cc: Jeff Epler <jepler@unpythonic.net>,
git@vger.kernel.org, Sebastian Schuberth <sschuberth@gmail.com>,
Charles Bailey <charles@hashpling.org>
Subject: Re: A note on modern git plus ancient meld ("wrong number of arguments")
Date: Fri, 10 Feb 2012 02:23:49 -0600 [thread overview]
Message-ID: <20120210082106.GA7871@burratino> (raw)
In-Reply-To: <CAJDDKr58LV9EDJZP+3S0YfyTOXFgJWD6nm=AiA19MkyBF-wb_g@mail.gmail.com>
David Aguilar wrote:
> On Thu, Feb 9, 2012 at 11:17 AM, Jeff Epler <jepler@unpythonic.net> wrote:
>> At $DAYJOB, I recently encountered a problem after upgrading from (don't
>> laugh) git 1.7.1 to 1.7.8.3: one developer stated that meld failed to
>> run, instead displaying the error 'Wrong number of arguments (Got 5)'.
>>
>> We determined that this user was running a very old version of meld
>> (1.1.1) from his home directory, as opposed to the also very old system
>> version of meld (1.1.5).
[...]
> We originally used the --output test so that we wouldn't have to check
> for a specific version.
My bad. How about something like this patch (untested)?
-- >8 --
Subject: mergetools/meld: Use version number to detect '--output' support
In v1.7.7-rc0~3^2 (2011-08-19), git mergetool's "meld" support learned
to use the --output option when calling versions of meld (1.5.0 and
later) that support it.
Alas, it misdetects old versions (before 1.1.5, 2006-06-11) of meld as
supporting the option, so on systems with such meld, instead of
getting a nice merge helper, the operator gets a dialog box with the
text "Wrong number of arguments (Got 5)". (Version 1.1.5 is when meld
switched to using optparse. One consequence of that change was that
errors in usage are detected and signalled through the exit status
even when --help was passed.)
Just parse version numbers instead. We can detect the version number
by running "meld --version" and postprocessing it. As a
futureproofing measure, we are careful to handle all three --version
output formats encountered so far. When confused, the mergetool falls
back to assuming the --output option is not usable.
- [0.1, 0.8.5): "GNOME Meld 0.1".
- [0.8.5, 0.9.4.1):
"Meld 0.8.5
Written by Stephen Kennedy <steve9000@users.sf.net>"
- [0.9.4.1, 1.1.3): "GNOME Meld 0.9.4.1" again.
- [1.1.3, 1.1.5): back to the two-line form.
- [1.1.5, present): "$0 1.1.5". ($0 is typically "meld".)
Reported-by: Jeff Epler <jepler@unpythonic.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
mergetools/meld | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/mergetools/meld b/mergetools/meld
index eaa115cc..3de29629 100644
--- a/mergetools/meld
+++ b/mergetools/meld
@@ -23,10 +23,15 @@ check_meld_for_output_version () {
meld_path="$(git config mergetool.meld.path)"
meld_path="${meld_path:-meld}"
- if "$meld_path" --output /dev/null --help >/dev/null 2>&1
- then
- meld_has_output_option=true
- else
- meld_has_output_option=false
- fi
+ # "GNOME Meld 0.8.4" -> "0.8.4"
+ meld_version=$("$meld_path" --version 2>/dev/null)
+ meld_version=${meld_version#GNOME }
+ meld_version=${meld_version#* }
+
+ case $meld_version in
+ [2-9].* | [1-9][0-9]* | 1.[5-9]* | 1.[1-9][0-9]*) # >= 1.5.0
+ meld_has_output_option=true ;;
+ *)
+ meld_has_output_option=false ;;
+ esac
}
--
1.7.9
next prev parent reply other threads:[~2012-02-10 8:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-09 19:17 A note on modern git plus ancient meld ("wrong number of arguments") Jeff Epler
2012-02-10 2:42 ` David Aguilar
2012-02-10 8:23 ` Jonathan Nieder [this message]
2012-02-10 11:29 ` Sebastian Schuberth
2012-02-10 17:59 ` Jonathan Nieder
2012-02-10 21:28 ` Junio C Hamano
2012-02-10 21:57 ` [PATCH] mergetools/meld: Use --help output to detect --output support Jonathan Nieder
2012-02-10 22:23 ` Jeff Epler
2012-02-10 22:30 ` Jeff Epler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120210082106.GA7871@burratino \
--to=jrnieder@gmail.com \
--cc=charles@hashpling.org \
--cc=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=jepler@unpythonic.net \
--cc=sschuberth@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).