Skip to content

Commit

Permalink
handle multibyte characters in name
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Fredrik Gustafsson authored and Junio C Hamano committed Jun 14, 2013
1 parent edca415 commit 7467124
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
3 changes: 2 additions & 1 deletion git-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,15 @@ resolve_relative_url ()
module_list()
{
(
git ls-files --error-unmatch --stage -- "$@" ||
git ls-files -z --error-unmatch --stage -- "$@" ||
echo "unmatched pathspec exists"
) |
perl -e '
my %unmerged = ();
my ($null_sha1) = ("0" x 40);
my @out = ();
my $unmatched = 0;
$/ = "\0";
while (<STDIN>) {
if (/^unmatched pathspec/) {
$unmatched = 1;
Expand Down
12 changes: 12 additions & 0 deletions t/t7400-submodule-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -868,4 +868,16 @@ test_expect_success 'submodule deinit fails when submodule has a .git directory
test -n "$(git config --get-regexp "submodule\.example\.")"
'

test_expect_success 'submodule with strange name works "å äö"' '
mkdir "å äö" &&
(
cd "å äö" &&
git init &&
touch sub
git add sub
git commit -m "init sub"
)
git submodule add "/å äö" &&
test -n "$(git submodule | grep "å äö")"
'
test_done

0 comments on commit 7467124

Please sign in to comment.