v8:
* This is a resend of the last two patches, i.e. these two patches apply
  at 5c896f7c3ec (origin/sb/submodule-short-status^^)
* below is a diff of this patch series against origin/sb/submodule-short-status
* add tests showing the subtle bug fix in case of nesting.
* add a bit of documentation

v7:
previous work at
https://public-inbox.org/git/20170325003610.15282-1-sbel...@google.com/

diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index 01b457c322..452c6eb875 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -187,6 +187,8 @@ Submodules have more state and instead report
                m    the submodule has modified content
                ?    the submodule has untracked files
 
+Note that 'm' and '?' are applied recursively, e.g. if a nested submodule
+in a submodule contains an untracked file, this is reported as '?' as well.
 
 If -b is used the short-format status is preceded by a line
 
diff --git a/t/t7506-status-submodule.sh b/t/t7506-status-submodule.sh
index ab822c79e6..4d6d8f6817 100755
--- a/t/t7506-status-submodule.sh
+++ b/t/t7506-status-submodule.sh
@@ -327,20 +327,65 @@ test_expect_success 'setup superproject with untracked 
file in nested submodule'
                git add sub1 &&
                git commit -a -m "update sub1 to contain nested sub"
        ) &&
-       echo untracked >super/sub1/sub2/untracked
+       echo "{ \$7=\"HASH\"; \$8=\"HASH\"; print }" >suppress_hashes.awk &&
+       echo "suppress_hashes.awk" >>.git/info/exclude &&
+       echo "output2" >>.git/info/exclude &&
+       echo content >super/sub1/sub2/file &&
+       echo content >super/sub2/file
 '
 
 test_expect_success 'status with untracked file in nested submodule 
(porcelain)' '
        git -C super status --porcelain >output &&
        diff output - <<-\EOF
         M sub1
+        M sub2
+       EOF
+'
+
+test_expect_success 'status with untracked file in nested submodule 
(porcelain=2)' '
+       git -C super status --porcelain=2 >output &&
+       awk -f suppress_hashes.awk output >output2 &&
+       diff output2 - <<-\EOF
+       1 .M S..U 160000 160000 160000 HASH HASH sub1
+       1 .M S..U 160000 160000 160000 HASH HASH sub2
        EOF
 '
 
 test_expect_success 'status with untracked file in nested submodule (short)' '
        git -C super status --short >output &&
        diff output - <<-\EOF
-        ? sub1
+        m sub1
+        ? sub2
+       EOF
+'
+
+test_expect_success 'setup superproject with modified file in nested 
submodule' '
+       git -C super/sub1/sub2 add file &&
+       git -C super/sub2 add file
+'
+
+test_expect_success 'status with added file in nested submodule (porcelain)' '
+       git -C super status --porcelain >output &&
+       diff output - <<-\EOF
+        M sub1
+        M sub2
+       EOF
+'
+
+test_expect_success 'status with added file in nested submodule (porcelain=2)' 
'
+       git -C super status --porcelain=2 >output &&
+       awk -f suppress_hashes.awk output >output2 &&
+       diff output2 - <<-\EOF
+       1 .M S.M. 160000 160000 160000 HASH HASH sub1
+       1 .M S.M. 160000 160000 160000 HASH HASH sub2
+       EOF
+'
+
+test_expect_success 'status with added file in nested submodule (short)' '
+       git -C super status --short >output &&
+       diff output - <<-\EOF
+        m sub1
+        m sub2
        EOF
 '
 

Reply via email to