Re: [PATCH] git-describe: Die early if there are no possible descriptions

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

 



Bj?rn Steinbrink <B.Steinbrink@xxxxxx> wrote:
> If we found no refs that may be used for git-describe with the current
> options, then die early instead of pointlessly walking the whole history.
> 
> Signed-off-by: Bj?rn Steinbrink <B.Steinbrink@xxxxxx>
> ---
> In git.git with all the tags dropped, this makes "git describe" go down
> from 0.244 to 0.003 seconds for me. This is especially noticeable with
> "git submodule" which calls describe with increasing levels of allowed
> refs to be matched. Without tags, this means that it walks the whole
> history in the submodule twice (first annotated, then plain tags), just
> to find out that it can't describe the thing anyway.
> 
> I'm not particularly sure about found_names actually counting the found
> names, it was just out of the thought that maybe the walking code could
> make use of it, but I didn't actually check that and ran out of time, so
> I'm sending this version, hoping that it doesn't suck too much.

This seems reasonable to me.  Really you don't need found_names
to be a counter, but could just always set it to 1 every time the
add_to_known_names function is called.  All you care about is that
add_to_known_names was invoked at least once.

Also, I really think that first paragraph after the --- should
have been part of the commit message.  The message above doesn't
justify the change, even if it is fairly trivial, without that
additional explanation.

> @@ -39,6 +40,8 @@ static void add_to_known_names(const char *path,
>  			       const unsigned char *sha1)
>  {
>  	struct commit_name *e = commit->util;
> +	if (!e)
> +		found_names++;
>  	if (!e || e->prio < prio) {
>  		size_t len = strlen(path)+1;
>  		free(e);

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