lookup commits of annotated tags - stagit-gopher - A git gopher frontend. (mirr… | |
git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2h… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit d045340ea048e3aa45af719caadad413efdfda4d | |
parent 9128782aa848465c47928d4ce8f40bd3320a5661 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Wed, 6 Jan 2016 15:35:34 +0100 | |
lookup commits of annotated tags | |
NOTE: as described in the TODO this will be rewritten more cleanly | |
later using git_reference_*. | |
Diffstat: | |
M stagit.c | 16 ++++++++++++++++ | |
1 file changed, 16 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/stagit.c b/stagit.c | |
@@ -875,6 +875,7 @@ writetags(FILE *fp) | |
struct commitinfo *ci; | |
git_strarray tagnames; | |
git_object *obj = NULL; | |
+ git_tag *tag = NULL; | |
const git_oid *id = NULL; | |
size_t i, len; | |
@@ -900,6 +901,18 @@ writetags(FILE *fp) | |
if (git_revparse_single(&obj, repo, tagnames.strings[i])) | |
continue; | |
id = git_object_id(obj); | |
+ | |
+ /* lookup actual commit (from annotated tag etc) */ | |
+ if (!git_tag_lookup(&tag, repo, id)) { | |
+ git_object_free(obj); | |
+ obj = NULL; | |
+ if (git_tag_peel(&obj, tag)) | |
+ break; | |
+ git_tag_free(tag); | |
+ tag = NULL; | |
+ id = git_object_id(obj); | |
+ } | |
+ | |
if (!(ci = commitinfo_getbyoid(id))) | |
break; | |
@@ -936,9 +949,12 @@ writetags(FILE *fp) | |
commitinfo_free(ci); | |
git_object_free(obj); | |
+ obj = NULL; | |
} | |
fputs("</tbody></table>", fp); | |
git_strarray_free(&tagnames); | |
+ git_tag_free(tag); | |
+ git_object_free(obj); | |
return 0; | |
} |