diff options
| author | Carlos Martín Nieto <cmn@dwim.me> | 2014-09-30 04:38:05 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-09-30 04:38:05 +0200 |
| commit | af6cc38fc0acba14277ebfd247e0a46a867a2c33 (patch) | |
| tree | def8c9608166385421ca769972b93258e1066db8 /examples/for-each-ref.c | |
| parent | 3a728fb508ea3eea8033a9e338c61a6421ad21b2 (diff) | |
| parent | a2a23322193eeca5d2912c0b74c5374f8ec21737 (diff) | |
| download | libgit2-af6cc38fc0acba14277ebfd247e0a46a867a2c33.tar.gz | |
Merge remote-tracking branch 'upstream/master' into cmn/describe
Diffstat (limited to 'examples/for-each-ref.c')
| -rw-r--r-- | examples/for-each-ref.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/for-each-ref.c b/examples/for-each-ref.c new file mode 100644 index 000000000..d6846bb0d --- /dev/null +++ b/examples/for-each-ref.c @@ -0,0 +1,46 @@ +#include <git2.h> +#include <stdio.h> +#include "common.h" + +static int show_ref(git_reference *ref, void *data) +{ + git_repository *repo = data; + git_reference *resolved = NULL; + char hex[GIT_OID_HEXSZ+1]; + const git_oid *oid; + git_object *obj; + + if (git_reference_type(ref) == GIT_REF_SYMBOLIC) + check_lg2(git_reference_resolve(&resolved, ref), + "Unable to resolve symbolic reference", + git_reference_name(ref)); + + oid = git_reference_target(resolved ? resolved : ref); + git_oid_fmt(hex, oid); + hex[GIT_OID_HEXSZ] = 0; + check_lg2(git_object_lookup(&obj, repo, oid, GIT_OBJ_ANY), + "Unable to lookup object", hex); + + printf("%s %-6s\t%s\n", + hex, + git_object_type2string(git_object_type(obj)), + git_reference_name(ref)); + + if (resolved) + git_reference_free(resolved); + return 0; +} + +int main(int argc, char **argv) +{ + git_repository *repo; + + if (argc != 1 || argv[1] /* silence -Wunused-parameter */) + fatal("Sorry, no for-each-ref options supported yet", NULL); + + check_lg2(git_repository_open(&repo, "."), + "Could not open repository", NULL); + check_lg2(git_reference_foreach(repo, show_ref, repo), + "Could not iterate over references", NULL); + return 0; +} |
