git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Make sure to use Araxis' "compare" and not e.g. ImageMagick's

From
David Aguilar <davvid@gmail.com>
Date
Jul 23, 2012, 21:34 UTC
Message-ID
<CAJDDKr71SYf3=iUahGLVA2kmKYqT85Thaiooo2YCJqprS5nVag@mail.gmail.com>
In-Reply-To
<7vipdejhmh.fsf@alter.siamese.dyndns.org>
On Mon, Jul 23, 2012 at 2:24 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 29 quoted lines
> Sebastian Schuberth <sschuberth@gmail.com> writes:
>
>> We have no such assurance. That's why you correctly call it a
>> heuristics after all
>
> ImageMagick "compare" takes "--version" and says something like
> this to its standard output:
>
>     $ compare --version
>     Version: ImageMagick 6.6.0-4 2012-05-02 Q16
>     http://www.imagemagick.org
>     Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC
>
> Does Araxis compare take "--version" and behave in a way that is
> cheaply controllable?  If it opens a GUI window and pops up a dialog
> that says "Option not understood", then it is not "controllable",
> but if it quickly dies with "No such option" sent to the standard
> error output, or sending its version string to the standard output,
> then we could use something like:
>
>         case "$(compare --version 2>/dev/null)" in
>         "Araxis compare version"*)
>                 echo compare ;;
>         *)
>                 echo "$1" ;;
>         esac
>
> instead, and that would be more robust than the path based
> heuristics.
Araxis compare (the one I have) does not accept --version.

Also, the GraphicsMagick (ImageMagick fork) compare does not have --version, but it does have "compare version":

$ compare version GraphicsMagick 1.3.12 2010-03-08 Q8 http://www.GraphicsMagick.org/ Copyright (C) 2002-2010 GraphicsMagick Group. Additional copyrights and licenses apply to this software. See http://www.GraphicsMagick.org/www/Copyright.html for details. ...

If we care to blacklist *Magick compare, then we may be able to call "compare version" and parse the output looking for "Magic".

I tested ImageMagick compare and it also understands "compare version".

Araxis compare prints nothing when "compare version" is called. Likely because it thinks it has nothing to do. It does the same if I say "compare blahblah", and returns exit status 0. So its output is useless.

It seems like the best we can do is specifically blacklist the *Magick "compare" commands so that they do not show up as false positives. And the only way to identify them is to parse their output, since all commands return status 0 for "compare version".

Another possibility is to parse the output of "compare" (no args) and grep for "merge". The name "Araxis Merge" is never actually printed, but the help text for "-merge" does appear.... yep.. it's a heuristic.

Sebastian, are you testing on Windows? The araxis "compare" I used is OS X. Does "compare version" open a GUI window for you? For me it does not. What about "compare -h", or just "compare" ?

-- 
David
Previous: Sebastian SchuberthNext: Sebastian Schuberth
Message 33 of 40 in “Various merge / diff tool related minor clean-ups and improvements”
  1. 0/4 Various merge / diff tool related minor clean-ups and improvementsSebastian Schuberth, Jul 23, 2012
  2. 0/5 Various merge / diff tool related minor clean-ups and improvementsSebastian Schuberth, Jul 23, 2012
  3. 1/5 Sort the list of tools that support both merging and diffing alphabeticallySebastian Schuberth, Jul 23, 2012
  4. 2/5 Use variables for the lists of tools that support merging / diffingSebastian Schuberth, Jul 23, 2012
  5. Junio C HamanoJul 23, 2012
  6. Sebastian SchuberthJul 23, 2012
  7. 1/4 Use variables for the lists of tools that support merging / diffingSebastian Schuberth, Jul 23, 2012
  8. Junio C HamanoJul 23, 2012
  9. Sebastian SchuberthJul 23, 2012
  10. 3/5 Explicitly list all valid diff tools and document --tool-help as an optionSebastian Schuberth, Jul 23, 2012
  11. Junio C HamanoJul 23, 2012
  12. mergetool: support --tool-help option like difftool doesJunio C Hamano, Jul 23, 2012
  13. Sebastian SchuberthJul 23, 2012
  14. mergetool: support --tool-help option like difftool doesSebastian Schuberth, Jul 23, 2012
  15. Junio C HamanoJul 23, 2012
  16. Sebastian SchuberthJul 23, 2012
  17. David AguilarJul 23, 2012
  18. Junio C HamanoJul 23, 2012
  19. Sebastian SchuberthJul 23, 2012
  20. Junio C HamanoJul 23, 2012
  21. Re*: mergetool: support --tool-help option like difftool doesJunio C Hamano, Aug 23, 2012
  22. David AguilarAug 23, 2012
  23. Junio C HamanoAug 23, 2012
  24. David AguilarAug 24, 2012
  25. Jens LehmannAug 26, 2012
  26. 4/5 Make sure to use Araxis' "compare" and not e.g. ImageMagick'sSebastian Schuberth, Jul 23, 2012
  27. Junio C HamanoJul 23, 2012
  28. Make sure to use Araxis' "compare" and not e.g. ImageMagick'sSebastian Schuberth, Jul 23, 2012
  29. Junio C HamanoJul 23, 2012
  30. Sebastian SchuberthJul 23, 2012
  31. Junio C HamanoJul 23, 2012
  32. Sebastian SchuberthJul 23, 2012
  33. David AguilarJul 23, 2012
  34. Sebastian SchuberthJul 23, 2012
  35. Andreas SchwabJul 23, 2012
  36. Junio C HamanoJul 23, 2012
  37. Sebastian SchuberthJul 23, 2012
  38. Junio C HamanoJul 23, 2012
  39. Sebastian SchuberthJul 23, 2012
  40. 5/5 Add a few more code comments and blank lines in guess_merge_toolSebastian Schuberth, Jul 23, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.