Use struct commit in tar-tree
It was open-coding getting the commit date from a commit. Signed-off-by: Daniel Barkalow <barkalow@iabervon> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
5207234a68
commit
c3f9281255
41
tar-tree.c
41
tar-tree.c
@ -4,6 +4,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
#include "commit.h"
|
||||||
|
|
||||||
#define RECORDSIZE (512)
|
#define RECORDSIZE (512)
|
||||||
#define BLOCKSIZE (RECORDSIZE * 20)
|
#define BLOCKSIZE (RECORDSIZE * 20)
|
||||||
@ -369,39 +370,10 @@ static void traverse_tree(struct tree *tree,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get commit time from committer line of commit object */
|
|
||||||
static time_t commit_time(void * buffer, unsigned long size)
|
|
||||||
{
|
|
||||||
time_t result = 0;
|
|
||||||
char *p = buffer;
|
|
||||||
|
|
||||||
while (size > 0) {
|
|
||||||
char *endp = memchr(p, '\n', size);
|
|
||||||
if (!endp || endp == p)
|
|
||||||
break;
|
|
||||||
*endp = '\0';
|
|
||||||
if (endp - p > 10 && !memcmp(p, "committer ", 10)) {
|
|
||||||
char *nump = strrchr(p, '>');
|
|
||||||
if (!nump)
|
|
||||||
break;
|
|
||||||
nump++;
|
|
||||||
result = strtoul(nump, &endp, 10);
|
|
||||||
if (*endp != ' ')
|
|
||||||
result = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
size -= endp - p - 1;
|
|
||||||
p = endp + 1;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
unsigned char sha1[20];
|
unsigned char sha1[20];
|
||||||
unsigned char commit_sha1[20];
|
struct commit *commit;
|
||||||
void *buffer;
|
|
||||||
unsigned long size;
|
|
||||||
struct tree *tree;
|
struct tree *tree;
|
||||||
|
|
||||||
setup_git_directory();
|
setup_git_directory();
|
||||||
@ -418,11 +390,10 @@ int main(int argc, char **argv)
|
|||||||
usage(tar_tree_usage);
|
usage(tar_tree_usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = read_object_with_reference(sha1, "commit", &size, commit_sha1);
|
commit = lookup_commit_reference(sha1);
|
||||||
if (buffer) {
|
if (commit) {
|
||||||
write_global_extended_header(commit_sha1);
|
write_global_extended_header(commit->object.sha1);
|
||||||
archive_time = commit_time(buffer, size);
|
archive_time = commit->date;
|
||||||
free(buffer);
|
|
||||||
}
|
}
|
||||||
tree = parse_tree_indirect(sha1);
|
tree = parse_tree_indirect(sha1);
|
||||||
if (!tree)
|
if (!tree)
|
||||||
|
Loading…
Reference in New Issue
Block a user