Skip to content
  • Alexander Rinass's avatar
    diff: run arguments through precompose_argv · 90a78b83
    Alexander Rinass authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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: default avatarAlexander Rinass <alex@fournova.com>
    Helped-by: default avatarTorsten Bögershausen <tboegi@web.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    90a78b83