diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-02-12 12:41:35 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-02-12 12:41:36 -0800 |
commit | a74c387495d1640537c5e163b053932ab1992156 (patch) | |
tree | befce01b840061b2b2f615caefeac601aef6d66e | |
parent | Merge branch 'jt/t5616-robustify' (diff) | |
parent | git rm submodule: succeed if .gitmodules index stat info is zero (diff) | |
download | tgif-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.c | 2 | ||||
-rwxr-xr-x | t/t3600-rm.sh | 7 |
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 && |