Re: [PATCH v3 2/7] invalidate_ref_cache(): take the submodule as parameter
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 12, 2011, 19:19 UTC
- Message-ID
- <7vwrca81c7.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1318445067-19279-3-git-send-email-mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
> Instead of invalidating the ref cache on an all-or-nothing basis, > allow the cache for individual submodules to be invalidated.
That "allow" does not seem to describe what this patch does. It disallows the wholesale invalidation and forces the caller to invalidate ref cache individually.
Probably that is what all the existing callers want, but I would have expected that an existing feature would be kept, perhaps like this instead:
if (!submodule) {
struct ref_cache *c;
for (c = ref_cache; c; c = c->next)
clear_ref_cache(c);
} else {
clear_ref_cache(get_ref_cache(submodule);
}Not a major "vetoing" objection, just a comment.
Show 23 quoted lines
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
> refs.c | 12 ++++--------
> 1 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index 120b8e4..cc72609 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -202,13 +202,9 @@ static struct cached_refs *get_cached_refs(const char *submodule)
> return refs;
> }
>
> -static void invalidate_ref_cache(void)
> +static void invalidate_ref_cache(const char *submodule)
> {
> - struct cached_refs *refs = cached_refs;
> - while (refs) {
> - clear_cached_refs(refs);
> - refs = refs->next;
> - }
> + clear_cached_refs(get_cached_refs(submodule));
> }