git rm submodule: succeed if .gitmodules index stat info is zero
authorDavid Turner <dturner@twosigma.com>
Mon, 27 Jan 2020 18:58:56 +0000 (13:58 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 28 Jan 2020 22:46:14 +0000 (14:46 -0800)
commit7edee32985b1363e35e91c7358a9e60f2359fbba
tree310ef2b2ad2ce63815394522aef736b648743528
parenta0ba80001a42eeacae94e3503c3e7d4bf7f2f2e1
git rm submodule: succeed if .gitmodules index stat info is zero

The bug was that ie_match_stat() was used to compare if the stat info
for the file was compatible with the stat info in the index, rather
using ie_modified() to check if the file was in fact different from the
version in the index.

A version of this (with deinit instead of rm) was reported here:
https://lore.kernel.org/git/CAPOqYV+C-P9M2zcUBBkD2LALPm4K3sxSut+BjAkZ9T1AKLEr+A@mail.gmail.com/

It seems that in that case, the user's clone command left the index
with empty stat info.  The mailing list was unable to reproduce this.
But we (Two Sigma) hit the bug while using some plumbing commands, so
I'm fixing it.  I manually confirmed that the fix also repairs deinit
in this scenario.

Signed-off-by: David Turner <dturner@twosigma.com>
Reported-by: Thomas Bétous <th.betous@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/t3600-rm.sh