* [PATCH v3] mergetools: add winmerge as a builtin tool
@ 2015-05-20 4:20 David Aguilar
2015-05-20 7:11 ` Sebastian Schuberth
0 siblings, 1 reply; 2+ messages in thread
From: David Aguilar @ 2015-05-20 4:20 UTC (permalink / raw)
To: Phil Susi, git
Cc: Junio C Hamano, Philip Oakley, Johannes Schindelin,
Sebastian Schuberth, SZEDER Gábor
Add a winmerge scriptlet with the commands described in [1] so
that users can use winmerge without needing to perform any
additional configuration.
[1] http://thread.gmane.org/gmane.comp.version-control.git/268631
Helped-by: Philip Oakley <philipoakley@iee.org>
Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Helped-by: Sebastian Schuberth <sschuberth@gmail.com>
Helped-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: David Aguilar <davvid@gmail.com>
---
Changes since v2: We now use "$PROGRAMFILES" exclusively
and let the shell concatenate the " (x86)" part when testing
filesystem paths. The C:/... hard-coded fallbacks have been
removed since $PROGRAMFILES should exist in practice.
mergetools/winmerge | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 mergetools/winmerge
diff --git a/mergetools/winmerge b/mergetools/winmerge
new file mode 100644
index 0000000..435623c
--- /dev/null
+++ b/mergetools/winmerge
@@ -0,0 +1,35 @@
+diff_cmd () {
+ "$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
+ return 0
+}
+
+merge_cmd () {
+ # mergetool.winmerge.trustExitCode is implicitly false.
+ # touch $BACKUP so that we can check_unchanged.
+ touch "$BACKUP"
+ "$merge_tool_path" -u -e -dl Local -dr Remote \
+ "$LOCAL" "$REMOTE" "$MERGED"
+ check_unchanged
+}
+
+translate_merge_tool_path() {
+ # Use WinMergeU.exe if it exists in $PATH
+ if type WinMergeU.exe >/dev/null 2>&1
+ then
+ echo WinMergeU.exe
+ return
+ fi
+
+ # Look for WinMergeU.exe in the typical locations
+ winmerge_exe="WinMerge/WinMergeU.exe"
+
+ if test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES (x86)/$winmerge_exe"
+ then
+ printf '%s' "$PROGRAMFILES (x86)/$winmerge_exe"
+ elif test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES/$winmerge_exe"
+ then
+ printf '%s' "$PROGRAMFILES/$winmerge_exe"
+ else
+ echo WinMergeU.exe
+ fi
+}
--
2.4.1.218.g416b006
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v3] mergetools: add winmerge as a builtin tool
2015-05-20 4:20 [PATCH v3] mergetools: add winmerge as a builtin tool David Aguilar
@ 2015-05-20 7:11 ` Sebastian Schuberth
0 siblings, 0 replies; 2+ messages in thread
From: Sebastian Schuberth @ 2015-05-20 7:11 UTC (permalink / raw)
To: David Aguilar
Cc: Phil Susi, Git Mailing List, Junio C Hamano, Philip Oakley,
Johannes Schindelin, SZEDER Gábor
On Wed, May 20, 2015 at 6:20 AM, David Aguilar <davvid@gmail.com> wrote:
> +translate_merge_tool_path() {
> + # Use WinMergeU.exe if it exists in $PATH
> + if type WinMergeU.exe >/dev/null 2>&1
Maybe "type -p" here?
> + # Look for WinMergeU.exe in the typical locations
> + winmerge_exe="WinMerge/WinMergeU.exe"
> +
> + if test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES (x86)/$winmerge_exe"
> + then
> + printf '%s' "$PROGRAMFILES (x86)/$winmerge_exe"
> + elif test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES/$winmerge_exe"
> + then
> + printf '%s' "$PROGRAMFILES/$winmerge_exe"
> + else
> + echo WinMergeU.exe
> + fi
> +}
This does not solve the problem reported by Dscho that some versions
of Cygwin / MSYS 1 / MSYS 2 might export "$ProgramFiles" instead of
"$PROGRAMFILES" (or similar for related variables).
Also there is a bit too much string duplication for my taste. And why
use "echo" in some places and "printf" in others?
I still like a loop-based solution best:
IFS=$'\n'
for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
cut -d '=' -f 2- | sort -u)
do
test -n "$directory" &&
test -x "$directory/$winmerge_exe" &&
echo "$directory/$winmerge_exe" &&
break
done
--
Sebastian Schuberth
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-20 7:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-20 4:20 [PATCH v3] mergetools: add winmerge as a builtin tool David Aguilar
2015-05-20 7:11 ` Sebastian Schuberth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox