You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
56 lines
1.1 KiB
#include "refs.h" |
|
#include "cache.h" |
|
#include "commit.h" |
|
#include "rev-cache.h" |
|
|
|
static void process_head_list(int verbose) |
|
{ |
|
char buf[512]; |
|
|
|
while (fgets(buf, sizeof(buf), stdin)) { |
|
unsigned char sha1[20]; |
|
struct commit *commit; |
|
|
|
if (get_sha1_hex(buf, sha1)) { |
|
error("ignoring: %s", buf); |
|
continue; |
|
} |
|
if (!(commit = lookup_commit_reference(sha1))) { |
|
error("not a commit: %s", sha1_to_hex(sha1)); |
|
continue; |
|
} |
|
record_rev_cache(commit->object.sha1, verbose ? stderr : NULL); |
|
} |
|
} |
|
|
|
|
|
static const char *build_rev_cache_usage = |
|
"git-build-rev-cache <rev-cache-file> < list-of-heads"; |
|
|
|
int main(int ac, char **av) |
|
{ |
|
int verbose = 0; |
|
const char *path; |
|
|
|
while (1 < ac && av[1][0] == '-') { |
|
if (!strcmp(av[1], "-v")) |
|
verbose = 1; |
|
else |
|
usage(build_rev_cache_usage); |
|
ac--; av++; |
|
} |
|
|
|
if (ac != 2) |
|
usage(build_rev_cache_usage); |
|
|
|
path = av[1]; |
|
|
|
/* read existing rev-cache */ |
|
read_rev_cache(path, NULL, 0); |
|
|
|
process_head_list(verbose); |
|
|
|
/* update the rev-cache database by appending newly found one to it */ |
|
write_rev_cache(path, path); |
|
return 0; |
|
}
|
|
|