From: Junio C Hamano Date: Thu, 05 Jan 2012 16:23:39 GMT Subject: Re: [PATCH] Fix incorrect ref namespace check Message-ID: <7v39bunmno.fsf@alter.siamese.dyndns.org> In-Reply-To: <1325767180-15083-1-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy writes: > The reason why the trailing slash is needed is obvious. refs/stash and > HEAD are not namespace, but complete refs. Do full string compare on them. > > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > I missed prefixcmp(..., "HEAD") right below prefixcmp(..., "refs/stash") As Michael has been actively showing interest in cleaning up the area, he should have been CC'ed, I would think. > > builtin/fetch.c | 2 +- > builtin/remote.c | 2 +- > log-tree.c | 4 ++-- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/builtin/fetch.c b/builtin/fetch.c > index 33ad3aa..daa68d2 100644 > --- a/builtin/fetch.c > +++ b/builtin/fetch.c > @@ -573,7 +573,7 @@ static void find_non_local_tags(struct transport *transport, > > for_each_ref(add_existing, &existing_refs); > for (ref = transport_get_remote_refs(transport); ref; ref = ref->next) { > - if (prefixcmp(ref->name, "refs/tags")) > + if (prefixcmp(ref->name, "refs/tags/")) > continue; > > /* > diff --git a/builtin/remote.c b/builtin/remote.c > index 583eec9..f54a89a 100644 > --- a/builtin/remote.c > +++ b/builtin/remote.c > @@ -534,7 +534,7 @@ static int add_branch_for_removal(const char *refname, > } > > /* don't delete non-remote-tracking refs */ > - if (prefixcmp(refname, "refs/remotes")) { > + if (prefixcmp(refname, "refs/remotes/")) { > /* advise user how to delete local branches */ > if (!prefixcmp(refname, "refs/heads/")) > string_list_append(branches->skipped, > diff --git a/log-tree.c b/log-tree.c > index 319bd31..535b905 100644 > --- a/log-tree.c > +++ b/log-tree.c > @@ -119,9 +119,9 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in > type = DECORATION_REF_REMOTE; > else if (!prefixcmp(refname, "refs/tags/")) > type = DECORATION_REF_TAG; > - else if (!prefixcmp(refname, "refs/stash")) > + else if (!strcmp(refname, "refs/stash")) > type = DECORATION_REF_STASH; > - else if (!prefixcmp(refname, "HEAD")) > + else if (!strcmp(refname, "HEAD")) > type = DECORATION_REF_HEAD; > > if (!cb_data || *(int *)cb_data == DECORATE_SHORT_REFS)