git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/6] pathspec: cache string length when initialize pathspec

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Sep 28, 2010, 01:08 UTC
Message-ID
<AANLkTinu5msupME4efxLLRcDPvM3gFd2q+k3RLw6tYuV@mail.gmail.com>
In-Reply-To
<7v62xqx20o.fsf@alter.siamese.dyndns.org>
2010/9/28 Junio C Hamano <gitster@pobox.com>:
Show 42 quoted lines
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>> Subject: Re: [PATCH 3/6] pathspec: cache string length when initialize pathspec
>
> s/initialize/initializing/;
>
>> This field will be used when tree_entry_interesting() is converted to
>> use struct pathspec. Currently it uses pathlens[] in struct
>> diff_options to avoid calculating string over and over again.
>>
>> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
>> ---
>>  cache.h |    3 +++
>>  dir.c   |   11 ++++++++++-
>>  2 files changed, 13 insertions(+), 1 deletions(-)
>>
>> diff --git a/cache.h b/cache.h
>> index 6227ddb..045c9fc 100644
>> --- a/cache.h
>> +++ b/cache.h
>> @@ -495,6 +495,9 @@ extern int ie_modified(const struct index_state *, struct cache_entry *, struct
>>  struct pathspec {
>>       const char **raw;
>>       int nr;
>> +     struct pathspec_item {
>> +             int len;
>> +     } *items;
>
> Hmm... I would have expected to see
>
>        struct pathspec_item {
>                const char *pattern;
>                int len;
>        };
>        struct pathspec {
>                struct pathspec_item *items;
>                int nr;
>        };
>
> as you would be allocating a structure anyway, but persumably many places
> take their input as a NULL terminated "char **" array, and keeping such an
> array around as the "raw" field may be easier in refactoring.

pathspec_item.pattern is added later on when I implement negative pathspec so it's not too different from your expectation. "raw" however is kept. The reason (again in my WIP negative pathspec) is that I use "!" alone to denote a negative pathspec. So if user gives { "foo", "!", "foo/bar", NULL }, "raw" will contain exactly that, but there are only two pathspec_item for "foo" and "foo/bar" (with negative flag set).

-- 
Duy
Previous: Junio C HamanoNext: Nguyễn Thái Ngọc Duy
Message 8 of 22 in “Introduce pathspec struct”
  1. 0/6 Introduce pathspec structNguyễn Thái Ngọc Duy, Sep 19, 2010
  2. 1/6 Add struct pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  3. Junio C HamanoSep 27, 2010
  4. yj2133011Sep 29, 2010
  5. 2/6 diff-no-index: use diff_tree_setup_paths()Nguyễn Thái Ngọc Duy, Sep 19, 2010
  6. 3/6 pathspec: cache string length when initialize pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  7. Junio C HamanoSep 27, 2010
  8. Nguyen Thai Ngoc DuySep 28, 2010
  9. 4/6 Convert struct diff_options to use struct pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  10. Junio C HamanoSep 27, 2010
  11. 5/6 tree_entry_interesting(): remove dependency on struct diff_optionsNguyễn Thái Ngọc Duy, Sep 19, 2010
  12. Junio C HamanoSep 27, 2010
  13. Nguyen Thai Ngoc DuySep 28, 2010
  14. 6/6 Move tree_entry_interesting() to tree-walk.c and export itNguyễn Thái Ngọc Duy, Sep 19, 2010
  15. Elijah NewrenSep 20, 2010
  16. Nguyen Thai Ngoc DuySep 20, 2010
  17. Junio C HamanoSep 28, 2010
  18. Bo YangSep 28, 2010
  19. Nguyen Thai Ngoc DuySep 28, 2010
  20. Junio C HamanoSep 29, 2010
  21. David RiptonSep 28, 2010
  22. Junio C HamanoSep 29, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.