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

Subsystems: documentation, the rest

STALE3735d

7 messages, 3 authors, 2016-06-15 · open the first message on its own page

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

From: David Aguilar <hidden>
Date: 2016-06-15 22:46:42

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 <redacted>
---

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(-)
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

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

From: Markus Heidelberg <hidden>
Date: 2016-06-15 22:46:42

David Aguilar, 03.05.2009:
quoted hunk
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"
+				"$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

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

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:46:42

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 <redacted>
---

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

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

From: David Aguilar <hidden>
Date: 2016-06-15 22:46:42

On  0, Johannes Schindelin [off-list ref] wrote:
Hi,

On Sat, 2 May 2009, David Aguilar wrote:
quoted
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 <redacted>
---

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

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

From: David Aguilar <hidden>
Date: 2016-06-15 22:46:42

David Aguilar, 03.05.2009:
quoted
+				"$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

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

From: David Aguilar <hidden>
Date: 2016-06-15 22:46:42

Markus Heidelberg [off-list ref] wrote:
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

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

From: Markus Heidelberg <hidden>
Date: 2016-06-15 22:46:44

David Aguilar, 04.05.2009:
Seeing .diff_XXXX as the filename is bad too
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help