Am 12.06.2013 23:06, schrieb Junio C Hamano:
> Fredrik Gustafsson <iv...@iveqy.com> writes:
> 
>> Bugg reported here:
>> http://thread.gmane.org/gmane.comp.version-control.git/218922/focus=226791
> 
> The URL is nice supplemental info as footnote, but please write log
> message in a way that a reader can understand without going there.
> In this case, it wouldn't be so hard, I think, perhaps like:
> 
>       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.
> 
>       Read from "git ls-files -z" instead, which is easier than
>       unwrapping C-quote ourselves.
> 
> or something.
> 
>>  module_list()
>>  {
>>      (
>> -            git ls-files --error-unmatch --stage -- "$@" ||
>> +            git ls-files --error-unmatch --stage -z -- "$@" ||
>>              echo "unmatched pathspec exists"
>>      ) |
>> +    sed -e 's/\x00/\n/g' |
> 
> It is strange to preprosess input to be read by a Perl script with
> sed ;-)
> 
> How about doing it this way instead?  Does the result pass your
> test?

Hmm, I just came around to test that patch, and for me the new
test even succeeds without the changes to module_list(). So I'm
not convinced yet what we are fixing here ;-)

The original poster reported that the submodule just added locally
is not showing up in a subsequent `git submodule`. And it doesn't
for me either, no matter if the path contains umlauts or not. Will
take a deeper look when I find some more time to do that, maybe
recent changes to "git add" play a role here too.

>  git-submodule.sh | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 79bfaac..19faf58 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -113,7 +113,7 @@ resolve_relative_url ()
>  module_list()
>  {
>       (
> -             git ls-files --error-unmatch --stage -- "$@" ||
> +             git ls-files --error-unmatch --stage -z -- "$@" ||
>               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;
> 

--
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

Reply via email to