aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@gmail.com>2016-06-30 20:05:48 +0000
committerRichard Maw <richard.maw@gmail.com>2016-07-13 19:06:39 +0000
commit52a0eca64f18ef5fca73230c6ffe208c589a9b96 (patch)
treee0b04042ca9be91c522cd7277edfa902445861ac
parentff9893ac8192579a00dd4c73ddff18ab232099a6 (diff)
downloadcgit-52a0eca64f18ef5fca73230c6ffe208c589a9b96.tar
cgit-52a0eca64f18ef5fca73230c6ffe208c589a9b96.tar.gz
cgit-52a0eca64f18ef5fca73230c6ffe208c589a9b96.zip
Fix archive generation
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>
-rw-r--r--ui-snapshot.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c
index f68e877..c6c3656 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -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,