diff: run arguments through precompose_argv
commit90a78b83e0b812d1f42501a54372720def4ddd84
authorAlexander Rinass <alex@fournova.com>
Fri, 13 May 2016 20:41:02 +0000 (13 22:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 13 May 2016 21:35:49 +0000 (13 14:35 -0700)
tree9e1d4ed51806d4643b3460c585381b1f971593cb
parent765428699a5381f113d19974720bc91b5bfeaf1d
diff: run arguments through precompose_argv

When running diff commands, a pathspec containing decomposed
unicode code points is not converted to precomposed unicode form
under Mac OS X, but we normalize the paths in the index and the
history to precomposed form on that platform.  As a result, the
pathspec would not match and no diff is shown.

Unlike many builtin commands, the "diff" family of commands do
not use parse_options(), which is how other builtin commands
indirectly call precompose_argv() to normalize argv[] into
precomposed form on Mac OSX.  Teach these commands to call
precompose_argv() themselves.

Note that precomopose_argv() normalizes not just paths but all
command line arguments, so things like "git diff -G $string"
when $string has the decomposed form would first be normalized
into the precomposed form and would stop hitting the same string
in the decomposed form in the diff output with this change.

It is not a problem per-se, as "log" family of commands already use
parse_options() and call precompose_argv()--we can think of this
change as making the "diff" family of commands behave in a similar
way as the commands in the "log" family.

Signed-off-by: Alexander Rinass <alex@fournova.com>
Helped-by: Torsten Bòˆgershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/diff-files.c
builtin/diff-index.c
builtin/diff-tree.c
builtin/diff.c
t/t3910-mac-os-precompose.sh