Re: A note on modern git plus ancient meld ("wrong number of arguments")

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]