Thomas Gummerer <t.gumme...@gmail.com> writes:

> Add an api for access to the index file.  Currently there is only a very
> basic api for accessing the index file, which only allows a full read of
> the index, and lets the users of the data filter it.  The new index api
> gives the users the possibility to use only part of the index and
> provides functions for iterating over and accessing cache entries.
>
> This simplifies future improvements to the in-memory format, as changes
> will be concentrated on one file, instead of the whole git source code.
>
> Signed-off-by: Thomas Gummerer <t.gumme...@gmail.com>
> ---
>  cache.h         |  57 +++++++++++++++++++++++++++++-
>  read-cache-v2.c |  96 +++++++++++++++++++++++++++++++++++++++++++++++--
>  read-cache.c    | 108 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++----
>  read-cache.h    |  12 ++++++-
>  4 files changed, 263 insertions(+), 10 deletions(-)
>
> diff --git a/cache.h b/cache.h
> index 5082b34..d38dfbd 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -127,7 +127,8 @@ struct cache_entry {
>       unsigned int ce_flags;
>       unsigned int ce_namelen;
>       unsigned char sha1[20];
> -     struct cache_entry *next;
> +     struct cache_entry *next; /* used by name_hash */
> +     struct cache_entry *next_ce; /* used to keep a list of cache entries */

The reader often needs to rewind the read-pointer partially while
walking the index (e.g. next_cache_entry() in unpack-trees.c and how
the o->cache_bottom position is used throughout the subsystem).  I
am not sure if this singly-linked list is a good way to go.

> +/*
> + * Options by which the index should be filtered when read partially.
> + *
> + * pathspec: The pathspec which the index entries have to match
> + * seen: Used to return the seen parameter from match_pathspec()
> + * max_prefix, max_prefix_len: These variables are set to the longest
> + *     common prefix, the length of the longest common prefix of the
> + *     given pathspec

These probably should use "struct pathspec" abstration, not just the
"array of raw strings", no?

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to