threads / patch / 19393

patchmergetool--lib: add support for araxis merge

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

## tl;dr

2 messages between May 18, 2009 and May 23, 2009. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

David Aguilar· May 18, 2009, 03: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 applies on top of the da/mergetool-lib branch currently in pu.

This is a rework of a patch to add araxis support to mergetool which originated on the msysgit list. The commented-out "-titleN:" options were intentionally left out of this patch because no amount of shell-quoting could get it to work when the title contained spaces.

http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7
 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 1683e6d..ead530d 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 8b5e6a8..e771b63 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.1.30.g55524
Markus Heidelberg· May 23, 2009, 14:29 UTC · re: David Aguilar · lore

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

David Aguilar, 18.05.2009:
Show 33 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 applies on top of the da/mergetool-lib branch
> currently in pu.
> 
> This is a rework of a patch to add araxis support
> to mergetool which originated on the msysgit list.
> The commented-out "-titleN:" options were
> intentionally left out of this patch because
> no amount of shell-quoting could get it to work
> when the title contained spaces.
> 
> http://groups.google.com/group/msysgit/browse_thread/thread/fa353fa2240594d7
> 
>  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(-)
> 
> 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
Here this is missing:
			touch "$BACKUP"

I had already mentioned it in a reply to your mail from May 03, maybe you have overseen it. But looking in my sent-mail I just noticed that my suggestion had an off-by-one-line error. Now it is correct.

Show 18 quoted lines
> +			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

← back to recent threads