summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2012-03-18 21:02:46 +0000
committerLars Hjemli <hjemli@gmail.com>2012-03-18 21:02:46 +0000
commit726ef4d2d06537562ba3105b93a7b485e2fad122 (patch)
tree702246e031ecbefa5273f0829f9c0d32f93abf49
parent2d1c80df0a2576cdacc7f72c295b66c95565c1e8 (diff)
parentdf6acf69d961f52faed943a571018b0ad13c3231 (diff)
downloadcgit-726ef4d2d06537562ba3105b93a7b485e2fad122.tar.gz
Merge branch 'tl/snapshot-attrs' into wip
-rw-r--r--ui-snapshot.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c
index 07cc944..3e75289 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -70,6 +70,9 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
const char *filename)
{
struct archiver_args args;
+ const unsigned char *commit_sha1;
+ time_t archive_time;
+ struct tree *tree;
struct commit *commit;
unsigned char sha1[20];
@@ -82,6 +85,14 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
cgit_print_error(fmt("Not a commit reference: %s", hex));
return 1;
}
+
+ commit_sha1 = commit->object.sha1;
+ archive_time = commit->date;
+
+ tree = parse_tree_indirect(sha1);
+ if (tree == NULL)
+ cgit_print_error(fmt("Not a tree object: %s", sha1));
+
memset(&args, 0, sizeof(args));
if (prefix) {
args.base = fmt("%s/", prefix);
@@ -90,8 +101,10 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
args.base = "";
args.baselen = 0;
}
- args.tree = commit->tree;
- args.time = commit->date;
+ args.tree = tree;
+ args.commit_sha1 = commit_sha1;
+ args.commit = commit;
+ args.time = archive_time;
args.compression_level = Z_DEFAULT_COMPRESSION;
ctx.page.mimetype = xstrdup(format->mimetype);
ctx.page.filename = xstrdup(filename);