Merge branch 'ph/builtin-srcs-are-in-subdir-these-days'
[gitweb.git] / git-submodule.sh
index 79bfaac9d4cb9a04e5e1fd7675d740cf9fc27e87..eb58c8e89d28626fed56604533ffb4b87991a6af 100755 (executable)
@@ -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;
@@ -1129,16 +1130,16 @@ cmd_status()
                        say "-$sha1 $displaypath"
                        continue;
                fi
-               set_name_rev "$sm_path" "$sha1"
                if git diff-files --ignore-submodules=dirty --quiet -- "$sm_path"
                then
+                       set_name_rev "$sm_path" "$sha1"
                        say " $sha1 $displaypath$revname"
                else
                        if test -z "$cached"
                        then
                                sha1=$(clear_local_git_env; cd "$sm_path" && git rev-parse --verify HEAD)
-                               set_name_rev "$sm_path" "$sha1"
                        fi
+                       set_name_rev "$sm_path" "$sha1"
                        say "+$sha1 $displaypath$revname"
                fi