]> git.ipfire.org Git - thirdparty/git.git/commit - commit.h
shallow: reset commit grafts when shallow is reset
authorJonathan Tan <jonathantanmy@google.com>
Thu, 17 Mar 2022 18:24:47 +0000 (11:24 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 18 Mar 2022 00:44:38 +0000 (17:44 -0700)
commit2a69ff09d5654de31361365e3faf9f8495f03ed7
tree8fb41bab337ed067f76a2e75883345fde0e277dd
parent74cc1aa55f30ed76424a0e7226ab519aa6265061
shallow: reset commit grafts when shallow is reset

When reset_repository_shallow() is called, Git clears its cache of
shallow information, so that if shallow information is re-requested, Git
will read fresh data from disk instead of reusing its stale cached data.
However, the cache of commit grafts is not likewise cleared, even though
there are commit grafts created from shallow information.

This means that if on-disk shallow information were to be updated and
then a commit-graft-using codepath were run (for example, a revision
walk), Git would be using stale commit graft information. This can be
seen from the test in this patch, in which Git performs a revision walk
(to check for changed submodules) after a fetch with --update-shallow.

Therefore, clear the cache of commit grafts whenever
reset_repository_shallow() is called.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c
commit.h
shallow.c
submodule.c
t/t5537-fetch-shallow.sh