handle multibyte characters in name

Many "git submodule" operations do not work on a submodule at a path whose
name is not in ASCII.

This is because "git ls-files" is used to find which paths are bound to
submodules to the current working tree, and the output is C-quoted by default
for non ASCII pathnames.

Tell "git ls-files" to not C-quote its output, which is easier than unwrapping
C-quote ourselves.

Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Fredrik Gustafsson
2013-06-14 02:26:02 +02:00
committed by Junio C Hamano
parent edca415256
commit 74671241fd
2 changed files with 14 additions and 1 deletions

View File

@ -113,7 +113,7 @@ resolve_relative_url ()
module_list()
{
(
git ls-files --error-unmatch --stage -- "$@" ||
git ls-files -z --error-unmatch --stage -- "$@" ||
echo "unmatched pathspec exists"
) |
perl -e '
@ -121,6 +121,7 @@ module_list()
my ($null_sha1) = ("0" x 40);
my @out = ();
my $unmatched = 0;
$/ = "\0";
while (<STDIN>) {
if (/^unmatched pathspec/) {
$unmatched = 1;