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

Re: [PATCH v2 2/2] tree:<depth>: skip some trees even when collecting omits

From
MATTHEW DEVORE <matvore@comcast.net>
Date
Jan 9, 2019, 02:47 UTC
Message-ID
<1446107549.183303.1547002024564@connect.xfinity.com>
In-Reply-To
<20190108232251.37748-1-jonathantanmy@google.com>
Show 30 quoted lines
> On January 8, 2019 at 3:22 PM Jonathan Tan <jonathantanmy@google.com> wrote:
> 
> 
> > > -static void filter_trees_update_omits(
> > > +static int filter_trees_update_omits(
> > >  	struct object *obj,
> > >  	struct filter_trees_depth_data *filter_data,
> > >  	int include_it)
> > >  {
> > >  	if (!filter_data->omits)
> > > -		return;
> > > +		return 1;
> > >  
> > >  	if (include_it)
> > > -		oidset_remove(filter_data->omits, &obj->oid);
> > > +		return oidset_remove(filter_data->omits, &obj->oid);
> > >  	else
> > > -		oidset_insert(filter_data->omits, &obj->oid);
> > > +		return oidset_insert(filter_data->omits, &obj->oid);
> > >  }
> > 
> > I think this function is getting too magical - if filter_data->omits is
> > not set, we pretend that we have omitted the tree, because we want the
> > same behavior when not needing omits and when the tree is omitted. Could
> > this be done another way?
> 
> Giving some more thought to this, since this is a static function, maybe
> documenting it as "Returns 1 if the objects that this object references need to
> be traversed for "omits" updates, and 0 otherwise" (with the appropriate code
> updates) would suffice.
That's not bad. But I sent a correction which is more like "/* Returns 1 if the oid was in the omits set before it was invoked. */" and returns 0 if omits was NULL. I thought it clearer when the function returns a value in terms of its own arguments and logic, rather than what the caller needs to do. The code I save going with your suggestion (vs. the one I just sent) is offset by the necessity of more detailed comments.
Previous: Jonathan TanNext: Matthew DeVore
Message 13 of 24 in “support for filtering trees and blobs based on depth”
  1. 0/2 support for filtering trees and blobs based on depthMatthew DeVore, Dec 10, 2018
  2. 1/2 list-objects-filter: teach tree:# how to handle >0Matthew DeVore, Dec 10, 2018
  3. Jonathan TanJan 8, 2019
  4. Matthew DeVoreJan 8, 2019
  5. Jonathan TanJan 8, 2019
  6. Junio C HamanoJan 8, 2019
  7. Jonathan TanJan 8, 2019
  8. Junio C HamanoJan 8, 2019
  9. MATTHEW DEVOREJan 9, 2019
  10. 2/2 tree:<depth>: skip some trees even when collecting omitsMatthew DeVore, Dec 10, 2018
  11. Jonathan TanJan 8, 2019
  12. Jonathan TanJan 8, 2019
  13. MATTHEW DEVOREJan 9, 2019
  14. Matthew DeVoreJan 9, 2019
  15. Junio C HamanoDec 11, 2018
  16. Matthew DeVoreJan 8, 2019
  17. 0/2 support for filtering trees and blobs based on depthMatthew DeVore, Jan 9, 2019
  18. 1/2 list-objects-filter: teach tree:# how to handle >0Matthew DeVore, Jan 9, 2019
  19. 2/2 tree:<depth>: skip some trees even when collecting omitsMatthew DeVore, Jan 9, 2019
  20. Jonathan TanJan 9, 2019
  21. Junio C HamanoJan 15, 2019
  22. Junio C HamanoJan 15, 2019
  23. Matthew DeVoreJan 17, 2019
  24. Junio C HamanoJan 17, 2019

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.