From: Jonathan Tan <jonathantanmy@google.com>
To: Stefan Beller <sbeller@google.com>
Cc: git@vger.kernel.org, jamill@microsoft.com,
Jonathan Nieder <jrnieder@gmail.com>
Subject: Re: [PATCH 01/13] repository: introduce object parser field
Date: Wed, 2 May 2018 13:30:05 -0700 [thread overview]
Message-ID: <20180502133005.668e9eefda445f37ba808b96@google.com> (raw)
In-Reply-To: <20180501213403.14643-2-sbeller@google.com>
On Tue, 1 May 2018 14:33:51 -0700
Stefan Beller <sbeller@google.com> wrote:
> Git's object access code can be thought of as containing two layers:
> the raw object store provides access to raw object content, while the
> higher level obj_hash code parses raw objects and keeps track of
> parenthood and other object relationships using 'struct object'.
> Keeping these layers separate should make it easier to find relevant
> functions and to change the implementation of one without having to
> touch the other.
I only understood this after reading the code below. I think this
paragraph can be removed; I don't see its relevance - of course we need
to store metadata about how to load objects somewhere, and caching
objects we have already loaded is a good idea: and the metadata and
cache are two separate things before and after this patch anyway.
> Add an object_parser field to 'struct repository' to prepare obj_hash
> to be handled per repository. Callers still only use the_repository
> for now --- later patches will adapt them to handle arbitrary
> repositories.
I think this is better reworded as:
Convert the existing global cache for parsed objects (obj_hash) into
repository-specific parsed object caches. Existing code that uses
obj_hash are modified to use the parsed object cache of
the_repository; future patches will use the parsed object caches of
other repositories.
> +struct object_parser *object_parser_new(void)
> +{
> + struct object_parser *o = xmalloc(sizeof(*o));
> + memset(o, 0, sizeof(*o));
> + return o;
> +}
I'm not sure that I like this style of code (I prefer the strbuf style
with _INIT and release(), which I think is more flexible) but I don't
feel too strongly about it.
> +struct object_parser {
> + struct object **obj_hash;
> + int nr_objs, obj_hash_size;
> +};
object_parser is probably a bad name. I think Duy had some good
suggestions in [1].
[1] https://public-inbox.org/git/CACsJy8CgX6BME=EhiDBfMRzBOYDBNHE6Ouxv4fZC-GW7Rsi81Q@mail.gmail.com/
> /*
> - * Holds any information related to accessing the raw object content.
> + * Holds any information needed to retrieve the raw content
> + * of objects. The object_parser uses this to get object
> + * content which it then parses.
> */
> struct raw_object_store *objects;
I think the additional sentence ("The object_parser uses this...") is
unnecessary and confusing, especially if its identity is going to be one
of storage (like "parsed_objects" implies).
> + /*
> + * State for the object parser. This owns all parsed objects
> + * (struct object) so callers do not have to manage their
> + * lifetime.
> + */
> + struct object_parser *parsed_objects;
Even after all the commits in this patch set, this does not store any
state for parsing. Maybe just document as:
All objects in this repository that have been parsed. This structure
owns all objects it references, so users of "struct object *"
generally do not need to free them; instead, when a repository is no
longer used, call object_parser_clear() on this structure.
(And maybe say that the freeing method on struct repository will
automatically call object_parser_clear().)
next prev parent reply other threads:[~2018-05-02 20:30 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-01 21:33 [PATCH 00/13] object store: alloc Stefan Beller
2018-05-01 21:33 ` [PATCH 01/13] repository: introduce object parser field Stefan Beller
2018-05-02 17:17 ` Duy Nguyen
2018-05-02 17:26 ` Stefan Beller
2018-05-02 17:58 ` Duy Nguyen
2018-05-02 20:30 ` Jonathan Tan [this message]
2018-05-01 21:33 ` [PATCH 02/13] object: add repository argument to create_object Stefan Beller
2018-05-01 21:43 ` Eric Sunshine
2018-05-01 21:33 ` [PATCH 03/13] object: add repository argument to grow_object_hash Stefan Beller
2018-05-01 21:33 ` [PATCH 04/13] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-05-02 20:34 ` Jonathan Tan
2018-05-01 21:33 ` [PATCH 05/13] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-05-01 21:33 ` [PATCH 06/13] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-05-01 21:33 ` [PATCH 07/13] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-05-01 21:33 ` [PATCH 08/13] alloc: add repository argument to alloc_object_node Stefan Beller
2018-05-01 21:33 ` [PATCH 09/13] alloc: add repository argument to alloc_report Stefan Beller
2018-05-01 21:34 ` [PATCH 10/13] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-05-01 21:34 ` [PATCH 11/13] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-05-01 21:34 ` [PATCH 12/13] object: allow create_object " Stefan Beller
2018-05-02 20:36 ` Jonathan Tan
2018-05-01 21:34 ` [PATCH 13/13] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-05-02 17:44 ` Duy Nguyen
2018-05-03 17:24 ` Stefan Beller
2018-05-03 17:35 ` Duy Nguyen
2018-05-02 20:50 ` Jonathan Tan
2018-05-03 17:25 ` Stefan Beller
2018-05-03 14:58 ` Duy Nguyen
2018-05-02 17:01 ` [PATCH 00/13] object store: alloc Duy Nguyen
2018-05-02 18:07 ` Jameson Miller
2018-05-02 18:22 ` Duy Nguyen
2018-05-02 18:44 ` Jameson Miller
2018-05-03 22:45 ` Stefan Beller
2018-05-07 14:05 ` Junio C Hamano
2018-05-07 20:53 ` Stefan Beller
2018-05-07 22:59 ` [PATCH v2 " Stefan Beller
2018-05-07 22:59 ` [PATCH v2 01/13] repository: introduce parsed objects field Stefan Beller
2018-05-08 17:23 ` Jonathan Tan
2018-05-07 22:59 ` [PATCH v2 02/13] object: add repository argument to create_object Stefan Beller
2018-05-07 22:59 ` [PATCH v2 03/13] object: add repository argument to grow_object_hash Stefan Beller
2018-05-07 22:59 ` [PATCH v2 04/13] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-05-07 22:59 ` [PATCH v2 05/13] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-05-07 22:59 ` [PATCH v2 06/13] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-05-07 22:59 ` [PATCH v2 07/13] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-05-07 22:59 ` [PATCH v2 08/13] alloc: add repository argument to alloc_object_node Stefan Beller
2018-05-07 22:59 ` [PATCH v2 09/13] alloc: add repository argument to alloc_report Stefan Beller
2018-05-07 22:59 ` [PATCH v2 10/13] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-05-07 22:59 ` [PATCH v2 11/13] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-05-07 22:59 ` [PATCH v2 12/13] object: allow create_object " Stefan Beller
2018-05-07 22:59 ` [PATCH v2 13/13] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-05-08 10:10 ` Jeff King
2018-05-08 15:00 ` Duy Nguyen
2018-05-08 18:38 ` Stefan Beller
2018-05-08 17:45 ` Jonathan Tan
2018-05-08 19:37 ` [PATCH v3 00/13] object store: alloc Stefan Beller
2018-05-08 19:37 ` [PATCH v3 01/13] repository: introduce parsed objects field Stefan Beller
2018-05-08 19:37 ` [PATCH v3 02/13] object: add repository argument to create_object Stefan Beller
2018-05-08 19:37 ` [PATCH v3 03/13] object: add repository argument to grow_object_hash Stefan Beller
2018-05-08 19:37 ` [PATCH v3 04/13] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-05-08 19:37 ` [PATCH v3 05/13] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-05-08 19:37 ` [PATCH v3 06/13] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-05-08 19:37 ` [PATCH v3 07/13] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-05-08 19:37 ` [PATCH v3 08/13] alloc: add repository argument to alloc_object_node Stefan Beller
2018-05-08 19:37 ` [PATCH v3 09/13] alloc: add repository argument to alloc_report Stefan Beller
2018-05-08 19:37 ` [PATCH v3 10/13] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-05-08 19:37 ` [PATCH v3 11/13] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-05-08 19:37 ` [PATCH v3 12/13] object: allow create_object " Stefan Beller
2018-05-08 19:37 ` [PATCH v3 13/13] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-05-08 20:04 ` Jonathan Tan
2018-05-08 20:37 ` Stefan Beller
2018-05-09 15:54 ` Duy Nguyen
2018-05-09 17:18 ` Duy Nguyen
2018-05-09 19:20 ` Stefan Beller
2018-05-10 15:43 ` Duy Nguyen
2018-05-10 0:40 ` [PATCH v4 00/13] object store: alloc Stefan Beller
2018-05-10 0:40 ` [PATCH v4 01/13] repository: introduce parsed objects field Stefan Beller
2018-05-10 0:40 ` [PATCH v4 02/13] object: add repository argument to create_object Stefan Beller
2018-05-10 0:40 ` [PATCH v4 03/13] object: add repository argument to grow_object_hash Stefan Beller
2018-05-10 0:40 ` [PATCH v4 04/13] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-05-10 0:40 ` [PATCH v4 05/13] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-05-10 0:40 ` [PATCH v4 06/13] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-05-10 0:40 ` [PATCH v4 07/13] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-05-10 0:40 ` [PATCH v4 08/13] alloc: add repository argument to alloc_object_node Stefan Beller
2018-05-10 0:40 ` [PATCH v4 09/13] alloc: add repository argument to alloc_report Stefan Beller
2018-05-10 0:40 ` [PATCH v4 10/13] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-05-10 0:40 ` [PATCH v4 11/13] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-05-10 0:40 ` [PATCH v4 12/13] object: allow create_object " Stefan Beller
2018-05-10 0:40 ` [PATCH v4 13/13] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-05-10 17:16 ` [PATCH v4 00/13] object store: alloc Jonathan Tan
2018-05-10 17:32 ` Stefan Beller
2018-05-10 20:56 ` Jonathan Tan
2018-05-10 22:36 ` Stefan Beller
2018-05-11 19:17 ` [PATCH] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-05-11 19:38 ` Eric Sunshine
2018-05-15 21:48 ` Stefan Beller
2018-05-16 2:27 ` Junio C Hamano
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180502133005.668e9eefda445f37ba808b96@google.com \
--to=jonathantanmy@google.com \
--cc=git@vger.kernel.org \
--cc=jamill@microsoft.com \
--cc=jrnieder@gmail.com \
--cc=sbeller@google.com \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).