threads / patch / 19163

patchmergetool--lib: add support for araxis merge

Subject: [PATCH] mergetool--lib: add support for araxis merge

## tl;dr

7 messages between May 3, 2009 and May 9, 2009. Diffs are folded; open one to read it.

replies: 6people: 3as markdown or json

David Aguilar· May 3, 2009, 01:18 UTC · lore

Araxis merge is now a built-in diff/merge tool. This adds araxis to git-completion and updates the documentation as well.

Signed-off-by: David Aguilar <davvid@gmail.com>
---
This patch is a result of the discussion on the msysgit list:
http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7

'compare' is the command-line utility that is provided on MacOS. Users on other platforms may have to manually set their mergetool.araxis.path.

 Documentation/git-difftool.txt         |    2 +-
 Documentation/git-mergetool.txt        |    2 +-
 Documentation/merge-config.txt         |    2 +-
 contrib/completion/git-completion.bash |    2 +-
 git-mergetool--lib.sh                  |   24 ++++++++++++++++++++++--
 5 files changed, 26 insertions(+), 6 deletions(-)
Show changes to 5 files +26 −6

Documentation/git-difftool.txt, Documentation/git-mergetool.txt, Documentation/merge-config.txt, contrib/completion/git-completion.bash, git-mergetool--lib.sh

diff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt
index 15b247b..96a6c51 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -31,7 +31,7 @@ OPTIONS
 	Use the diff tool specified by <tool>.
 	Valid merge tools are:
 	kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
-	ecmerge, diffuse and opendiff
+	ecmerge, diffuse, opendiff and araxis.
 +
 If a diff tool is not specified, 'git-difftool'
 will use the configuration variable `diff.tool`.  If the
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index ff9700d..68ed6c0 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -27,7 +27,7 @@ OPTIONS
 	Use the merge resolution program specified by <tool>.
 	Valid merge tools are:
 	kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
-	diffuse, tortoisemerge and opendiff
+	diffuse, tortoisemerge, opendiff and araxis.
 +
 If a merge resolution program is not specified, 'git-mergetool'
 will use the configuration variable `merge.tool`.  If the
diff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt
index 4832bc7..c0f96e7 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -23,7 +23,7 @@ merge.tool::
 	Controls which merge resolution program is used by
 	linkgit:git-mergetool[1].  Valid built-in values are: "kdiff3",
 	"tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
-	"diffuse", "ecmerge", "tortoisemerge", and
+	"diffuse", "ecmerge", "tortoisemerge", "araxis", and
 	"opendiff".  Any other value is treated is custom merge tool
 	and there must be a corresponding mergetool.<tool>.cmd option.
 
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 1a90cb8..dfd128b 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -911,7 +911,7 @@ _git_diff ()
 }
 
 __git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
-			tkdiff vimdiff gvimdiff xxdiff
+			tkdiff vimdiff gvimdiff xxdiff araxis
 "
 
 _git_difftool ()
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index a16a279..f3c63ef 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -18,6 +18,9 @@ translate_merge_tool_path () {
 	emerge)
 		echo emacs
 		;;
+	araxis)
+		echo compare
+		;;
 	*)
 		echo "$1"
 		;;
@@ -43,7 +46,7 @@ check_unchanged () {
 valid_tool () {
 	case "$1" in
 	kdiff3 | tkdiff | xxdiff | meld | opendiff | \
-	emerge | vimdiff | gvimdiff | ecmerge | diffuse)
+	emerge | vimdiff | gvimdiff | ecmerge | diffuse | araxis)
 		;; # happy
 	tortoisemerge)
 		if ! merge_mode; then
@@ -263,6 +266,23 @@ run_merge_tool () {
 			status=1
 		fi
 		;;
+	araxis)
+		if merge_mode; then
+			if $base_present; then
+				"$merge_tool_path" -wait -merge -3 -a1 \
+					"$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
+					>/dev/null 2>&1
+			else
+				"$merge_tool_path" -wait -2 \
+					"$LOCAL" "$REMOTE" "$MERGED" \
+					>/dev/null 2>&1
+			fi
+			check_unchanged
+		else
+			"$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
+				>/dev/null 2>&1
+		fi
+		;;
 	*)
 		merge_tool_cmd="$(get_merge_tool_cmd "$1")"
 		if test -z "$merge_tool_cmd"; then
@@ -302,7 +322,7 @@ guess_merge_tool () {
 		else
 			tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
 		fi
-		tools="$tools gvimdiff diffuse ecmerge"
+		tools="$tools gvimdiff diffuse ecmerge araxis"
 	fi
 	if echo "${VISUAL:-$EDITOR}" | grep emacs > /dev/null 2>&1; then
 		# $EDITOR is emacs so add emerge as a candidate
-- 
1.6.3.rc4
Markus Heidelberg· May 3, 2009, 06:54 UTC · re: David Aguilar · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

David Aguilar, 03.05.2009:
Show 12 quoted lines
> This patch is a result of the discussion on the msysgit list:
> 
> http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7
> 
> diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
> @@ -263,6 +266,23 @@ run_merge_tool () {
>  			status=1
>  		fi
>  		;;
> +	araxis)
> +		if merge_mode; then
> +			if $base_present; then
			touch "$BACKUP"
Show 17 quoted lines
> +				"$merge_tool_path" -wait -merge -3 -a1 \
> +					"$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
> +					>/dev/null 2>&1
> +			else
> +				"$merge_tool_path" -wait -2 \
> +					"$LOCAL" "$REMOTE" "$MERGED" \
> +					>/dev/null 2>&1
> +			fi
> +			check_unchanged
> +		else
> +			"$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
> +				>/dev/null 2>&1
> +		fi
> +		;;
>  	*)
>  		merge_tool_cmd="$(get_merge_tool_cmd "$1")"
>  		if test -z "$merge_tool_cmd"; then

Haven't you included the -title[1-3] command line switches because of the strange "'title'" format? The user on the msysgit list had commented it out in his patch, although he said it worked in this way. And looking at git-gui/lib/mergetool.tcl, it is done in the same way.

Markus
David Aguilar· May 3, 2009, 18:20 UTC · re: Markus Heidelberg · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

Show 23 quoted lines
> David Aguilar, 03.05.2009:
> > +				"$merge_tool_path" -wait -merge -3 -a1 \
> > +					"$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
> > +					>/dev/null 2>&1
> > +			else
> > +				"$merge_tool_path" -wait -2 \
> > +					"$LOCAL" "$REMOTE" "$MERGED" \
> > +					>/dev/null 2>&1
> > +			fi
> > +			check_unchanged
> > +		else
> > +			"$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
> > +				>/dev/null 2>&1
> > +		fi
> > +		;;
> 
> Haven't you included the -title[1-3] command line switches because of
> the strange "'title'" format? The user on the msysgit list had commented
> it out in his patch, although he said it worked in this way. And looking
> at git-gui/lib/mergetool.tcl, it is done in the same way.
> 
> Markus
> 

I can resend with the title stuff. I didn't include it since it was commented out in the original patch.

-- 
		David
David Aguilar· May 4, 2009, 00:09 UTC · re: Markus Heidelberg · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

Markus Heidelberg <markus.heidelberg@web.de> wrote:
Show 7 quoted lines
> 
> Haven't you included the -title[1-3] command line switches because of
> the strange "'title'" format? The user on the msysgit list had commented
> it out in his patch, although he said it worked in this way. And looking
> at git-gui/lib/mergetool.tcl, it is done in the same way.
> 
> Markus

I looked into it. Windows. :(

-title1:"nice stuff" works great everywhere except for windows. -title1:"'nice stuff'" doesn't work there either. That's probably why it was commented out in the original patch.

On windows we'd have to escape the spaces (wild guess) so the original patch is probably the best option since I don't feel like making the other platforms suffer for it.

Seeing .diff_XXXX as the filename is bad too (and that is a form of suffering as well) but it's a compromise since there is a possibility that we could fix that elsewhere to everyone's benefit.

As far as difftool is concerned, the code that generates the temp filename is prep_temp_blob() in diff.c. It's used by several callers that naturally care nothing about filenames.

It would be nice to specialize the ext-diff code to generate a more intuitive filename. Maybe something like original_filename.XXXXX.ext instead of the current .diff_XXXXX. Right now the choice of filename breaks syntax highlighting in some viewers and also makes the usage of --title args necessary since the default names tell us nothing about what we're viewing.

That's definitely not the kind of thing to be thinking about during an -rc cycle ;), though I would be interested in maybe working on that later if others agree that it's not a bad idea.

It wouldn't be perfect, but it would be just a little bit nicer for anyone that's using the tools everyday.

-- 
		David
Markus Heidelberg· May 9, 2009, 20:56 UTC · re: David Aguilar · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

David Aguilar, 04.05.2009:
> Seeing .diff_XXXX as the filename is bad too
Show 7 quoted lines
> It would be nice to specialize the ext-diff code to
> generate a more intuitive filename.  Maybe something
> like original_filename.XXXXX.ext instead of the current
> .diff_XXXXX.  Right now the choice of filename breaks
> syntax highlighting in some viewers and also makes
> the usage of --title args necessary since the default
> names tell us nothing about what we're viewing.
Yes, this change would make sense.
Johannes Schindelin· May 3, 2009, 14:30 UTC · re: David Aguilar · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

Hi,
On Sat, 2 May 2009, David Aguilar wrote:
Show 14 quoted lines
> Araxis merge is now a built-in diff/merge tool.
> This adds araxis to git-completion and updates
> the documentation as well.
> 
> Signed-off-by: David Aguilar <davvid@gmail.com>
> ---
> 
> This patch is a result of the discussion on the msysgit list:
> 
> http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7
> 
> 'compare' is the command-line utility that is provided
> on MacOS.  Users on other platforms may have to manually
> set their mergetool.araxis.path.

The only reason I did not merge that patch sent to msysgit@googlegroups was that I did not have _any_ confirmation that it works.

Do you have any?  As Araxis is not free software, I refuse to touch it.

Ciao, Dscho

David Aguilar· May 3, 2009, 18:18 UTC · re: Johannes Schindelin · lore

Re: [PATCH] mergetool--lib: add support for araxis merge

On  0, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 26 quoted lines
> Hi,
> 
> On Sat, 2 May 2009, David Aguilar wrote:
> 
> > Araxis merge is now a built-in diff/merge tool.
> > This adds araxis to git-completion and updates
> > the documentation as well.
> > 
> > Signed-off-by: David Aguilar <davvid@gmail.com>
> > ---
> > 
> > This patch is a result of the discussion on the msysgit list:
> > 
> > http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7
> > 
> > 'compare' is the command-line utility that is provided
> > on MacOS.  Users on other platforms may have to manually
> > set their mergetool.araxis.path.
> 
> The only reason I did not merge that patch sent to msysgit@googlegroups 
> was that I did not have _any_ confirmation that it works.
> 
> Do you have any?  As Araxis is not free software, I refuse to touch it.
> 
> Ciao,
> Dscho

I tested it (but not on windows). It works. I have the same reservations about non-free software, but at least they mention git on their homepage (even if it's only in their documentation).

-- 
		David

← back to recent threads