summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2016-01-06 15:35:34 +0100
committerHiltjo Posthuma <hiltjo@codemadness.org>2016-01-06 15:35:34 +0100
commitd045340ea048e3aa45af719caadad413efdfda4d (patch)
tree236c1e93e5558b8a76f4610e82e4c5ed95e8ff85
parent9128782aa848465c47928d4ce8f40bd3320a5661 (diff)
lookup commits of annotated tags
NOTE: as described in the TODO this will be rewritten more cleanly later using git_reference_*.
-rw-r--r--stagit.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/stagit.c b/stagit.c
index fc58c0c..817fb19 100644
--- 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;
}