summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-02-12 12:41:35 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-02-12 12:41:36 -0800
commita74c387495d1640537c5e163b053932ab1992156 (patch)
treebefce01b840061b2b2f615caefeac601aef6d66e
parentMerge branch 'jt/t5616-robustify' (diff)
parentgit rm submodule: succeed if .gitmodules index stat info is zero (diff)
downloadtgif-a74c387495d1640537c5e163b053932ab1992156.tar.xz
Merge branch 'dt/submodule-rm-with-stale-cache'
Running "git rm" on a submodule failed unnecessarily when .gitmodules is only cache-dirty, which has been corrected. * dt/submodule-rm-with-stale-cache: git rm submodule: succeed if .gitmodules index stat info is zero
-rw-r--r--submodule.c2
-rwxr-xr-xt/t3600-rm.sh7
2 files changed, 8 insertions, 1 deletions
diff --git a/submodule.c b/submodule.c
index 3a184b66ab..5e8e3d1480 100644
--- a/submodule.c
+++ b/submodule.c
@@ -82,7 +82,7 @@ int is_staging_gitmodules_ok(struct index_state *istate)
if ((pos >= 0) && (pos < istate->cache_nr)) {
struct stat st;
if (lstat(GITMODULES_FILE, &st) == 0 &&
- ie_match_stat(istate, istate->cache[pos], &st, 0) & DATA_CHANGED)
+ ie_modified(istate, istate->cache[pos], &st, 0) & DATA_CHANGED)
return 0;
}
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index 0ea858d652..f2c0168941 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -425,6 +425,13 @@ test_expect_success 'rm will error out on a modified .gitmodules file unless sta
git status -s -uno >actual &&
test_cmp expect actual
'
+test_expect_success 'rm will not error out on .gitmodules file with zero stat data' '
+ git reset --hard &&
+ git submodule update &&
+ git read-tree HEAD &&
+ git rm submod &&
+ test_path_is_missing submod
+'
test_expect_success 'rm issues a warning when section is not found in .gitmodules' '
git reset --hard &&