]>
Commit | Line | Data |
---|---|---|
8f3f9b09 JH |
1 | #include "refs.h" |
2 | #include "cache.h" | |
3 | #include "commit.h" | |
4 | #include "rev-cache.h" | |
5 | ||
6 | static void process_head_list(int verbose) | |
7 | { | |
8 | char buf[512]; | |
9 | ||
10 | while (fgets(buf, sizeof(buf), stdin)) { | |
11 | unsigned char sha1[20]; | |
12 | struct commit *commit; | |
13 | ||
14 | if (get_sha1_hex(buf, sha1)) { | |
15 | error("ignoring: %s", buf); | |
16 | continue; | |
17 | } | |
18 | if (!(commit = lookup_commit_reference(sha1))) { | |
19 | error("not a commit: %s", sha1_to_hex(sha1)); | |
20 | continue; | |
21 | } | |
22 | record_rev_cache(commit->object.sha1, verbose ? stderr : NULL); | |
23 | } | |
24 | } | |
25 | ||
26 | ||
27 | static const char *build_rev_cache_usage = | |
28 | "git-build-rev-cache <rev-cache-file> < list-of-heads"; | |
29 | ||
30 | int main(int ac, char **av) | |
31 | { | |
32 | int verbose = 0; | |
33 | const char *path; | |
34 | ||
35 | while (1 < ac && av[1][0] == '-') { | |
36 | if (!strcmp(av[1], "-v")) | |
37 | verbose = 1; | |
38 | else | |
39 | usage(build_rev_cache_usage); | |
40 | ac--; av++; | |
41 | } | |
42 | ||
43 | if (ac != 2) | |
44 | usage(build_rev_cache_usage); | |
45 | ||
46 | path = av[1]; | |
47 | ||
48 | /* read existing rev-cache */ | |
49 | read_rev_cache(path, NULL, 0); | |
50 | ||
51 | process_head_list(verbose); | |
52 | ||
53 | /* update the rev-cache database by appending newly found one to it */ | |
54 | write_rev_cache(path, path); | |
55 | return 0; | |
56 | } |