]> git.cameronkatri.com Git - cgit.git/commitdiff
Support unannotated tags in git-clone.
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 1 Feb 2013 20:08:51 +0000 (21:08 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 1 Feb 2013 20:11:32 +0000 (21:11 +0100)
Matthew McClintock reported that older unannotated tags were not
correctly being cloned and did not appear in info/refs. Further
investigation revealed some dubious prefix comparison code for
determining whether or not to write refs in info/refs. After comparing
it with git's own http-backend.c, it appears upstream does not use this
prefix logic.

OTOH, I don't know what the reasoning was when the prefix logic was
introduced. It appears to me to just be buggy, though it's possible
there are other reasons, and we'll have to revisit this commit.

But for now, Works For Me.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Matthew McClintock <msm@freescale.com>
Reported-by: Matthew McClintock <msm@freescale.com>
ui-clone.c

index 81e7a4e5b8126fb577dc4e1502cdb14744ff3469..fdea24f3fdf070b883f13357ce003d4ac4da892e 100644 (file)
@@ -19,12 +19,10 @@ static int print_ref_info(const char *refname, const unsigned char *sha1,
        if (!(obj = parse_object(sha1)))
                return 0;
 
-       if (!strcmp(refname, "HEAD") || !prefixcmp(refname, "refs/heads/"))
-               htmlf("%s\t%s\n", sha1_to_hex(sha1), refname);
-       else if (!prefixcmp(refname, "refs/tags") && obj->type == OBJ_TAG) {
+       htmlf("%s\t%s\n", sha1_to_hex(sha1), refname);
+       if (obj->type == OBJ_TAG) {
                if (!(obj = deref_tag(obj, refname, 0)))
                        return 0;
-               htmlf("%s\t%s\n", sha1_to_hex(sha1), refname);
                htmlf("%s\t%s^{}\n", sha1_to_hex(obj->sha1), refname);
        }
        return 0;