From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>,
Drew Northup <drew.northup@maine.edu>,
Jakub Narebski <jnareb@gmail.com>,
Heiko Voigt <hvoigt@hvoigt.net>,
Johan Herland <johan@herland.net>,
Julian Phillips <julian@quantumfyre.co.uk>
Subject: Re: [PATCH v3 2/7] invalidate_ref_cache(): take the submodule as parameter
Date: Thu, 13 Oct 2011 00:07:13 +0200 [thread overview]
Message-ID: <4E960F91.5020103@alum.mit.edu> (raw)
In-Reply-To: <7vwrca81c7.fsf@alter.siamese.dyndns.org>
On 10/12/2011 09:19 PM, Junio C Hamano wrote:
> 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.
Indeed, it is currently not possible for code outside of refs.c to
implement "forget everything" using the "forget one" function (because
there is no API for getting the list of caches that are currently in
memory).
A "forget everything" function might be useful for code that delegates
to a subprocess, if it does not know what submodules the subprocess has
tinkered with. Heiko, does that apply to the future submodule code?
Your specific suggestion would not work because currently
submodule==NULL signifies the main module. However, it would be easy to
add the few-line function when/if it is needed.
I guess the bigger issue for me is whether the whole submodule cache
thing is going to continue to be needed. I really am too ignorant of
how submodules work to be able to judge. From Heiko's recent email it
sounds like things might be moving in the direction of "top-level git
doesn't need to know much about submodules because it delegates to
subprocesses". He also said that submodule references are not modified
by the top-level git process, meaning that it might be sensible for the
submodule reference cache to be less capable than the main module
reference cache.
But if things move in the other direction (submodules handled by the
top-level git process), let alone if git is libified, then it seems
inevitable that there will someday be a "submodule" object that keeps
track of its own ref cache, with the submodule objects rather than the
submodule reference caches looked up by submodule name.
Given that I'm still very new to the codebase, I'm mostly making
"peephole changes" and so I'm happy to get your feedback about how this
fits into the grand scheme of things.
Michael
--
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
next prev parent reply other threads:[~2011-10-12 22:07 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 22:36 [PATCH 0/6] Retain caches of submodule refs Michael Haggerty
2011-08-12 22:36 ` [PATCH 1/6] Extract a function clear_cached_refs() Michael Haggerty
2011-08-12 22:36 ` [PATCH 2/6] Access reference caches only through new function get_cached_refs() Michael Haggerty
2011-08-14 22:12 ` Junio C Hamano
2011-08-23 4:21 ` Michael Haggerty
2011-08-12 22:36 ` [PATCH 3/6] Change the signature of read_packed_refs() Michael Haggerty
2011-08-12 22:36 ` [PATCH 4/6] Allocate cached_refs objects dynamically Michael Haggerty
2011-08-14 22:21 ` Junio C Hamano
2011-08-12 22:36 ` [PATCH 5/6] Store the submodule name in struct cached_refs Michael Haggerty
2011-08-12 22:36 ` [PATCH 6/6] Retain caches of submodule refs Michael Haggerty
2011-08-13 12:54 ` Heiko Voigt
2011-08-24 8:17 ` Michael Haggerty
2011-08-24 20:05 ` Heiko Voigt
2011-08-16 22:45 ` Junio C Hamano
2011-08-24 11:33 ` Michael Haggerty
2011-10-09 11:12 ` Michael Haggerty
2011-10-09 20:10 ` Junio C Hamano
2011-10-10 5:46 ` [PATCH 0/2] Provide API to invalidate refs cache Michael Haggerty
2011-10-10 5:46 ` [PATCH 1/2] invalidate_cached_refs(): take the submodule as parameter Michael Haggerty
2011-10-10 5:46 ` [PATCH 2/2] invalidate_cached_refs(): expose this function in refs API Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 0/7] Provide API to invalidate refs cache Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 1/7] invalidate_ref_cache(): rename function from invalidate_cached_refs() Michael Haggerty
2011-10-11 0:00 ` Junio C Hamano
2011-10-11 5:53 ` Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 2/7] invalidate_ref_cache(): take the submodule as parameter Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 3/7] invalidate_ref_cache(): expose this function in refs API Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 4/7] clear_cached_refs(): rename parameter Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 5/7] clear_cached_refs(): extract two new functions Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 6/7] write_ref_sha1(): only invalidate the loose ref cache Michael Haggerty
2011-10-10 8:24 ` [PATCH v2 7/7] clear_cached_refs(): inline function Michael Haggerty
2011-10-11 0:02 ` [PATCH v2 0/7] Provide API to invalidate refs cache Junio C Hamano
2011-10-11 5:50 ` Michael Haggerty
2011-10-11 8:09 ` Julian Phillips
2011-10-11 17:26 ` Junio C Hamano
2011-10-12 18:44 ` [PATCH v3 " Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 1/7] invalidate_ref_cache(): rename function from invalidate_cached_refs() Michael Haggerty
2011-10-12 19:14 ` Junio C Hamano
2011-10-12 22:12 ` Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 2/7] invalidate_ref_cache(): take the submodule as parameter Michael Haggerty
2011-10-12 19:19 ` Junio C Hamano
2011-10-12 22:07 ` Michael Haggerty [this message]
2011-10-17 18:00 ` Junio C Hamano
2011-11-03 10:23 ` Michael Haggerty
2011-11-03 18:57 ` Junio C Hamano
2011-10-12 18:44 ` [PATCH v3 3/7] invalidate_ref_cache(): expose this function in refs API Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 4/7] clear_cached_refs(): rename parameter Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 5/7] clear_cached_refs(): extract two new functions Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 6/7] write_ref_sha1(): only invalidate the loose ref cache Michael Haggerty
2011-10-12 18:44 ` [PATCH v3 7/7] clear_cached_refs(): inline function Michael Haggerty
2011-10-12 19:28 ` [PATCH v3 0/7] Provide API to invalidate refs cache Junio C Hamano
2011-10-10 19:53 ` Re: [PATCH 6/6] Retain caches of submodule refs Heiko Voigt
2011-10-11 4:12 ` Michael Haggerty
2011-10-11 17:41 ` Heiko Voigt
2011-08-13 12:34 ` [PATCH 0/6] " Heiko Voigt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E960F91.5020103@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=drew.northup@maine.edu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.net \
--cc=jnareb@gmail.com \
--cc=johan@herland.net \
--cc=julian@quantumfyre.co.uk \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).