Re: [PATCH 1/3] git-pack-objects: Automatically pack annotated tags if object was packed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Daniel Barkalow <barkalow@xxxxxxxxxxxx> wrote:
> On Mon, 3 Mar 2008, Shawn O. Pearce wrote:
> 
> > +	if (auto_tags && nr_result)
> > +		for_each_ref(add_ref_tag, NULL);
> 
> There's for_each_tag_ref() that does the path-based filter internally, in 
> a possibly more efficient way, and avoids open-coding the test for whether 
> this is a tag sort of ref.

Yea, I know about that call, but I didn't use it because I was
trying to use peel_ref() for its optimized peeled caching in
a packed-refs file.

To use peel_ref() you have to pass the full ref name ("refs/tags/v1.0")
and not a partial ref name ("v1.0") such as for_each_tag_ref() will
return to the callback function.  So I'd have to actually do extra
work to reconstruct a ref name, and possibly an invalid ref name at
that if for_each_tag_ref() ever looked outside of the refs/tags/
namespace.

Today there is no performance benefit to for_each_tag_ref() over
for_each_ref(), but using for_each_ref() lets me use peel_ref(),
which is a performance improvement if the ref in question came from
the packed-refs file.

So.... do we keep things as-is or try to optimize peel_ref() (or
some new variant of it?!?) for use in for_each_tag_ref() just on
the off chance that we somehow can optimize for_each_tag_ref to
avoid scanning refs/heads/?  Note that I did look into trying to
do that optimization to for_each_tag_ref() earlier last week and
concluded it wasn't easily possible right now, and wasn't likely
to be worth the development costs.

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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux