Re: [PATCH v4] mergetools: add winmerge as a builtin tool

2015-05-20 Thread Junio C Hamano
David Aguilar  writes:

> On Wed, May 20, 2015 at 09:47:56AM +0200, Sebastian Schuberth wrote:
>> On Wed, May 20, 2015 at 9:42 AM, David Aguilar  wrote:
>> 
>> > +   OIFS=$IFS
>> > +   IFS='
>> > +'
>> 
>> I guess this is just a formatting issue with the mail export as it should 
>> read
>> 
>> IFS=$'\n'
>> 
>> Otherwise looks good to me.
>> 
>> -- 
>> Sebastian Schuberth
>
> Thanks for the review.
>
> That's actually a literal newline inside a single-quoted string.
>
> I'm not sure how portable $'\n' is, but the ''
> approach is used often in the git code.

Thanks for being observant ;-)  Unless it is contrib/completion that
is known to be run with bash, please avoid $'string' and $"string".
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4] mergetools: add winmerge as a builtin tool

2015-05-20 Thread Sebastian Schuberth
On Wed, May 20, 2015 at 9:42 AM, David Aguilar  wrote:

> +   OIFS=$IFS
> +   IFS='
> +'

I guess this is just a formatting issue with the mail export as it should read

IFS=$'\n'

Otherwise looks good to me.

-- 
Sebastian Schuberth
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v4] mergetools: add winmerge as a builtin tool

2015-05-20 Thread David Aguilar
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 
Helped-by: Johannes Schindelin 
Helped-by: Sebastian Schuberth 
Helped-by: SZEDER Gábor 
Signed-off-by: David Aguilar 
---
Changes since v3:

* "type -p" is used instead of "type".
* printf is consistently used instead of echo.
* an env | grep pipeline is used to get the variables instead of hard-coding
  a set of variables in the script, as suggested by Sebastian in
  http://thread.gmane.org/gmane.comp.version-control.git/269437/focus=269441

 mergetools/winmerge | 45 +
 1 file changed, 45 insertions(+)
 create mode 100644 mergetools/winmerge

diff --git a/mergetools/winmerge b/mergetools/winmerge
new file mode 100644
index 000..fc364c769
--- /dev/null
+++ b/mergetools/winmerge
@@ -0,0 +1,45 @@
+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 -p WinMergeU.exe >/dev/null 2>&1
+   then
+   printf WinMergeU.exe
+   return
+   fi
+
+   # Look for WinMergeU.exe in the typical locations
+   winmerge_exe="WinMerge/WinMergeU.exe"
+   found=false
+   OIFS=$IFS
+   IFS='
+'
+   for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
+   cut -d '=' -f 2- | sort -u)
+   do
+   if test -n "$directory" && test -x "$directory/$winmerge_exe"
+   then
+   found=true
+   printf '%s' "$directory/$winmerge_exe"
+   break
+   fi
+   done
+   IFS=$OIFS
+
+   if test "$found" != true
+   then
+   printf WinMergeU.exe
+   fi
+}
-- 
2.4.1.218.gc09a0e5

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html