]>
Commit | Line | Data |
---|---|---|
56ec2256 | 1 | #include <git2.h> |
56ec2256 JK |
2 | #include "common.h" |
3 | ||
4 | static int show_ref(git_reference *ref, void *data) | |
5 | { | |
0c9c969a UG |
6 | git_repository *repo = data; |
7 | git_reference *resolved = NULL; | |
8 | char hex[GIT_OID_HEXSZ+1]; | |
9 | const git_oid *oid; | |
10 | git_object *obj; | |
11 | ||
12 | if (git_reference_type(ref) == GIT_REFERENCE_SYMBOLIC) | |
13 | check_lg2(git_reference_resolve(&resolved, ref), | |
14 | "Unable to resolve symbolic reference", | |
15 | git_reference_name(ref)); | |
16 | ||
17 | oid = git_reference_target(resolved ? resolved : ref); | |
18 | git_oid_fmt(hex, oid); | |
19 | hex[GIT_OID_HEXSZ] = 0; | |
20 | check_lg2(git_object_lookup(&obj, repo, oid, GIT_OBJECT_ANY), | |
21 | "Unable to lookup object", hex); | |
22 | ||
23 | printf("%s %-6s\t%s\n", | |
24 | hex, | |
25 | git_object_type2string(git_object_type(obj)), | |
26 | git_reference_name(ref)); | |
27 | ||
28 | if (resolved) | |
29 | git_reference_free(resolved); | |
30 | return 0; | |
56ec2256 JK |
31 | } |
32 | ||
0c9c969a | 33 | int lg2_for_each_ref(git_repository *repo, int argc, char **argv) |
56ec2256 | 34 | { |
0c9c969a UG |
35 | UNUSED(argv); |
36 | ||
37 | if (argc != 1) | |
38 | fatal("Sorry, no for-each-ref options supported yet", NULL); | |
39 | ||
40 | check_lg2(git_reference_foreach(repo, show_ref, repo), | |
41 | "Could not iterate over references", NULL); | |
42 | ||
43 | return 0; | |
56ec2256 | 44 | } |