]> granicus.if.org Git - cgit/commitdiff
Fix archive generation
authorRichard Maw <richard.maw@gmail.com>
Thu, 30 Jun 2016 20:05:48 +0000 (21:05 +0100)
committerRichard Maw <richard.maw@gmail.com>
Wed, 13 Jul 2016 19:06:39 +0000 (20:06 +0100)
The get_ref_from_filename function is expected to return a sha1.
It didn't actually do this,
instead returning the ref that would under normal circumstances resolve to that.

Since we're going to resolve refs in a way that is namespace aware
we need to return the sha1 rather than the ref,
since the archive is created by libgit code that is not namespace aware,
and it would try to resolve the ref again.

This previously worked fine
because it would resolve the ref the same way both times.

Signed-off-by: Richard Maw <richard.maw@gmail.com>
ui-snapshot.c

index f68e877fb2e5db33d20bf1bf3575fa9b57fa0558..c6c365683a8d2c8c45aa5cb1c4f9aba97ef06f52 100644 (file)
@@ -174,10 +174,10 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
                goto out;
 
        result = 0;
-       strbuf_release(&snapshot);
 
 out:
-       return result ? strbuf_detach(&snapshot, NULL) : NULL;
+       strbuf_release(&snapshot);
+       return result ? xstrdup(sha1_to_hex(sha1)) : NULL;
 }
 
 void cgit_print_snapshot(const char *head, const char *hex,