David Aguilar wrote: > On Thu, Feb 9, 2012 at 11:17 AM, Jeff Epler <jepler@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxx>" - [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@xxxxxxxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html