> > -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.