Re: [PATCH] show-ref: Allow --head to work with --verify
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 20, 2017, 19:03 UTC
- Message-ID
- <xmqqa8aly2o4.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170120155015.4360-1-git@thecybershadow.net>
Vladimir Panteleev <git@thecybershadow.net> writes:
> This patch adds --head support to show-ref's --verify logic, by > explicitly checking if the "HEAD" ref is specified when --head is > present.
Show 9 quoted lines
> @@ -207,6 +207,8 @@ int cmd_show_ref(int argc, const char **argv, const char *prefix)
> if (!quiet)
> show_one(*pattern, &oid);
> }
> + else if (show_head && !strcmp(*pattern, "HEAD"))
> + head_ref(show_ref, NULL);
> else if (!quiet)
> die("'%s' - not a valid ref", *pattern);
> elseThe context around here look like this:
while (*pattern) {
struct object_id oid; if (starts_with(*pattern, "refs/") &&
!read_ref(*pattern, oid.hash)) {
if (!quiet)
show_one(*pattern, &oid);
}
else if (!quiet)
die("'%s' - not a valid ref", *pattern);
else
return 1;
pattern++;
}and viewed in the wider context, I notice that quiet is not honored in the added code. I think that is easily fixable by replacing this hunk with something like:
- if (starts_with(*pattern, "refs/") && + if (to_show_ref(*pattern) &&
and then another hunk that implements to_show_ref() helper function, perhaps like
static int to_show_ref(const char *pattern)
{
if (starts_with(pattern, "refs/"))
return 1;
if (show_head && !strcmp(pattern, "HEAD"))
return 1;
return 0;
}or something.
Having said all that, using --verify on HEAD does not make much sense, because if HEAD is missing in .git/, I do not think Git considers that directory as a Git repository to begin with. So from that point of view, I am not sure what value this change adds to the system, even though the change is almost correct (modulo the "quiet" thing).