Re: [PATCH] Fix incorrect ref namespace check
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 5, 2012, 16:23 UTC
- 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 <pclouds@gmail.com> writes:
Show 6 quoted lines
> 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 <pclouds@gmail.com> > --- > 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.
Show 48 quoted lines
>
> 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)