From: Michael Haggerty <mhagger@alum.mit.edu>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
Drew Northup <drew.northup@maine.edu>,
Jakub Narebski <jnareb@gmail.com>,
Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH 0/6] Retain caches of submodule refs
Date: Sat, 13 Aug 2011 00:36:23 +0200 [thread overview]
Message-ID: <1313188589-2330-1-git-send-email-mhagger@alum.mit.edu> (raw)
...and work towards storing refs hierarchically.
Currently, the refs for submodules are put into a cache when accessed
but the cache is never reused. Whenever the refs for a submodule are
accessed, the cache is cleared and refilled, even if the submodule
cache already contains data for that submodule. Essentially, the
submodule cache only controls the lifetime of the data structures.
The main module is currently stored in a separate cache that is reused
properly.
This patch series institutes proper caching of submodule refs:
maintain a linked list of caches for each submodule, and add a new
entry whenever the refs for a new submodule are accessed. Also store
the cache for the main project in the same linked list for uniformity.
This change accomplishes two things:
* Proper caching of submodule refs. I'm not sure whether this is a
significant win by itself; it depends on the usage patterns and I'm
not too familiar with how submodules are used. But it seems pretty
clear that this is an improvement on the old kludge.
* It is a first step towards storing refs hierarchically *within*
modules. My plan is to build out "struct cached_refs" into a
hierarchical data structure mimicking the reference namespace
hierarchy, with one cached_ref instance for each "directory" of
refs. Then (the real goal) change the code to only populate the
parts of the cache hierarchy that are actually accessed.
I believe that this change is useful by itself, self-contained, and
ready to be committed. I plan to build the hierarchical-refs changes
on top of it. But if it is preferred, I can submit this series plus
the hierarchical-refs patches as a single patch series (once the
latter is done, which will still take some time).
This patch series applies on top of "next" rather than "master"
because it would otherwise conflict with the changes made by
js/ref-namespaces.
I am on vacation and don't know when I will have internet access, so
please don't be offended if I don't respond quickly to feedback.
Michael Haggerty (6):
Extract a function clear_cached_refs()
Access reference caches only through new function get_cached_refs().
Change the signature of read_packed_refs()
Allocate cached_refs objects dynamically
Store the submodule name in struct cached_refs.
Retain caches of submodule refs
refs.c | 106 ++++++++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 73 insertions(+), 33 deletions(-)
--
1.7.6.8.gd2879
next reply other threads:[~2011-08-12 22:37 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 22:36 Michael Haggerty [this message]
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
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=1313188589-2330-1-git-send-email-mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=drew.northup@maine.edu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--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).