Signed-off-by: Stefan Beller <sbel...@google.com>
---
 submodule.c                 | 16 ++++++++++++++--
 t/t3600-rm.sh               |  2 +-
 t/t7506-status-submodule.sh |  2 +-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/submodule.c b/submodule.c
index e06e52b993..0f477f3a4e 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1075,8 +1075,20 @@ unsigned is_submodule_modified(const char *path, int 
ignore_untracked)
                /* regular untracked files */
                if (buf.buf[0] == '?')
                        dirty_submodule |= DIRTY_SUBMODULE_UNTRACKED;
-               else
-                       dirty_submodule |= DIRTY_SUBMODULE_MODIFIED;
+
+               /* regular unmerged and renamed files */
+               if (buf.buf[0] == 'u' ||
+                   buf.buf[0] == '1' ||
+                   buf.buf[0] == '2') {
+                       if (buf.buf[5] == 'S') {
+                               /* nested submodule handling */
+                               if (buf.buf[6] == 'C' || buf.buf[7] == 'M')
+                                       dirty_submodule |= 
DIRTY_SUBMODULE_MODIFIED;
+                               if (buf.buf[8] == 'U')
+                                       dirty_submodule |= 
DIRTY_SUBMODULE_UNTRACKED;
+                       } else
+                               dirty_submodule |= DIRTY_SUBMODULE_MODIFIED;
+               }
 
                if ((dirty_submodule & DIRTY_SUBMODULE_MODIFIED) &&
                    ((dirty_submodule & DIRTY_SUBMODULE_UNTRACKED) || 
ignore_untracked))
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index a6e5c5bd56..b58793448b 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -659,7 +659,7 @@ test_expect_success 'rm of a populated nested submodule 
with nested untracked fi
        test -d submod &&
        test -f submod/.git &&
        git status -s -uno --ignore-submodules=none >actual &&
-       test_cmp expect.modified_inside actual &&
+       test_cmp expect.modified_untracked actual &&
        git rm -f submod &&
        test ! -d submod &&
        git status -s -uno --ignore-submodules=none >actual &&
diff --git a/t/t7506-status-submodule.sh b/t/t7506-status-submodule.sh
index ad46384064..e3cdcede72 100755
--- a/t/t7506-status-submodule.sh
+++ b/t/t7506-status-submodule.sh
@@ -324,7 +324,7 @@ test_expect_success 'status with untracked file in nested 
submodule (porcelain)'
 test_expect_success 'status with untracked file in nested submodule (short)' '
        git -C super status --short >output &&
        diff output - <<-\EOF
-        m sub1
+        ? sub1
        EOF
 '
 
-- 
2.12.1.438.gb674c4c09c

Reply via email to