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

Re: [PATCH 2/7] Fix ignoring of pathspecs with rev-list --objects

From
Elijah Newren <newren@gmail.com>
Date
Aug 25, 2010, 23:50 UTC
Message-ID
<AANLkTimCv-fn-h21pM8L9NiGg3w7OXBJ-kfiC+HJLsTP@mail.gmail.com>
In-Reply-To
<AANLkTimguNHXSFyO1EvS+dHbHiXU-dXTNwkWfEsVUbVC@mail.gmail.com>
On Wed, Aug 25, 2010 at 4:11 PM, Nguyen Thai Ngoc Duy <pclouds@gmail.com> wrote:
Show 19 quoted lines
> On Wed, Aug 25, 2010 at 12:53 PM, Elijah Newren <newren@gmail.com> wrote:
>> @@ -84,7 +85,24 @@ static void process_tree(struct rev_info *revs,
>>
>>        init_tree_desc(&desc, tree->buffer, tree->size);
>>
>> -       while (tree_entry(&desc, &entry)) {
>> +       for (; desc.size; update_tree_entry(&desc)) {
>> +               entry = desc.entry;
>> +
>> +               if (!all_interesting) {
>> +                       char *full_path = path_name(path, name);
>> +                       int full_path_len = strlen(full_path);
>> +                       int showit = tree_entry_interesting(&desc,
>> full_path, full_path_len,
>> +                                                           &revs->diffopt);
>> +                       free(full_path);
>
> I wonder if we can avoid xmalloc/free so many times here. If full_path
> is unchanged, how about moving it outside the loop?
Good point.
Show 32 quoted lines
>> diff --git a/tree-diff.c b/tree-diff.c
>> index cd659c6..2fb670b 100644
>> --- a/tree-diff.c
>> +++ b/tree-diff.c
>> @@ -91,7 +91,7 @@ static int compare_tree_entry(struct tree_desc *t1, struct
>> tree_desc *t2, const
>>  *  - zero for no
>>  *  - negative for "no, and no subsequent entries will be either"
>>  */
>> -static int tree_entry_interesting(struct tree_desc *desc, const char *base,
>> int baselen, struct diff_options *opt)
>> +int tree_entry_interesting(struct tree_desc *desc, const char *base, int
>> baselen, struct diff_options *opt)
>>  {
>>        const char *path;
>>        const unsigned char *sha1;
>
> While at it, can you please also fix its comments? The comments say
> pathspec while what it uses is actually path prefix. Maybe something
> like this
>
> diff --git a/tree-diff.c b/tree-diff.c
> index 3c34c77..514dbca 100644
> --- a/tree-diff.c
> +++ b/tree-diff.c
> @@ -83,7 +83,7 @@ static int compare_tree_entry(struct tree_desc *t1,
> struct tree_desc *t2, const
>  }
>
>  /*
> - * Is a tree entry interesting given the pathspec we have?
> + * Is a tree entry interesting given the path prefix we have?

I believe the comment is parsed thus: "tree entry" == combination of desc, base, and baselen. "pathspec" == paths and pathlens fields of opt (which do provide a pathspec). So I believe the original was correct, though I can see how it's confusing at first.

Show 7 quoted lines
>  *
>  * Return:
>  *  - 2 for "yes, and all subsequent entries will be"
>
>
> This patch is good stuff. Please be informed I will steal this patch
> for my narrow use.
Thanks, but I just found a bug with it; I'm investigating.
Previous: Nguyen Thai Ngoc DuyNext: Elijah Newren
Message 5 of 16 in “Minor bug fix and optimizations for revision/tree walking”
  1. 0/7 Minor bug fix and optimizations for revision/tree walkingElijah Newren, Aug 25, 2010
  2. 1/7 Add testcase showing how pathspecs are ignored with rev-list --objectsElijah Newren, Aug 25, 2010
  3. 2/7 Fix ignoring of pathspecs with rev-list --objectsElijah Newren, Aug 25, 2010
  4. Nguyen Thai Ngoc DuyAug 25, 2010
  5. Elijah NewrenAug 25, 2010
  6. Elijah NewrenAug 26, 2010
  7. Nguyen Thai Ngoc DuyAug 26, 2010
  8. Junio C HamanoAug 26, 2010
  9. 3/7 tree-walk: Correct bitrotted comment about tree_entry()Elijah Newren, Aug 25, 2010
  10. 4/7 tree_entry_interesting(): Make return value more specificElijah Newren, Aug 25, 2010
  11. 5/7 diff_tree(): Skip skip_uninteresting() when all remaining paths interestingElijah Newren, Aug 25, 2010
  12. Junio C HamanoAug 25, 2010
  13. Elijah NewrenAug 25, 2010
  14. Junio C HamanoAug 26, 2010
  15. 6/7 list-objects.c: Avoid recomputing interesting-ness for subtrees when possibleElijah Newren, Aug 25, 2010
  16. 7/7 tree-diff.c: Avoid recomputing interesting-ness for subtrees when possibleElijah Newren, Aug 25, 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.