On Mon, Dec 02, 2024 at 04:07:14PM +0900, Junio C Hamano wrote: > diff --git a/refs.c b/refs.c > index a24bfe3845..01ef2a3093 100644 > --- a/refs.c > +++ b/refs.c > @@ -735,7 +735,7 @@ int check_branch_ref(struct strbuf *sb, const char *name) > > int check_tag_ref(struct strbuf *sb, const char *name) > { > - if (name[0] == '-') > + if (name[0] == '-' || !strcmp(name, "HEAD")) > return -1; > > strbuf_reset(sb); I was thinking a bit about whether we can spin this a bit wider and disallow creation of any refname that looks like a root ref. But I don't think that would make sense, as root refs are defined as all-uppercase refs living in the root, and disallowing tags that look like this would go way too far. So I then wondered what a reasonable alternative would be, and the only rule I could come up with was to disallow root refs with "HEAD" in it. But even that doesn't feel reasonable to me. All to say: singling out "HEAD" feels like a sensible step, and I don't think we should handle root refs more generally here. The other patches look good to me, as well. Thanks! Patrick