lookup commits of annotated tags - stagit-gopher - A git gopher frontend. (mirror)
 (HTM) git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d045340ea048e3aa45af719caadad413efdfda4d
 (DIR) parent 9128782aa848465c47928d4ce8f40bd3320a5661
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       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(-)
       ---
 (DIR) 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;
        }