fix submodule lookup in bare repos - stagit - static git page generator
 (HTM) git clone git://git.codemadness.org/stagit
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 174a763058f9a90831ab5a2aeb1c9bfbecdabf48
 (DIR) parent f05e6b0fcb3b874180970d06ebcde05fb5aea470
 (HTM) Author: kst <nil@krj.st>
       Date:   Wed,  5 Aug 2020 22:11:18 +0000
       
       fix submodule lookup in bare repos
       
       git_submodule_lookup does not work without a working tree [1], so the
       current approach fails to recognize any submodules in bare repos.
       
       Instead, notice that
       
               $ git ls-tree HEAD
       
       lists any submodules as commit objects regardless of a working tree.
       This is the only instance commit object is used in a tree, so we will
       use this to check for submodules.
       
       [1]: https://github.com/libgit2/libgit2/pull/4305/files
       
       Diffstat:
         M stagit.c                            |       5 ++---
       
       1 file changed, 2 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/stagit.c b/stagit.c
       @@ -976,7 +976,6 @@ int
        writefilestree(FILE *fp, git_tree *tree, const char *path)
        {
                const git_tree_entry *entry = NULL;
       -        git_submodule *module = NULL;
                git_object *obj = NULL;
                git_off_t filesize;
                const char *entryname;
       @@ -1029,11 +1028,11 @@ writefilestree(FILE *fp, git_tree *tree, const char *path)
                                        fprintf(fp, "%juB", (uintmax_t)filesize);
                                fputs("</td></tr>\n", fp);
                                git_object_free(obj);
       -                } else if (!git_submodule_lookup(&module, repo, entryname)) {
       +                } else if (git_tree_entry_type(entry) == GIT_OBJ_COMMIT) {
       +                        /* commit object in tree is a submodule */
                                fprintf(fp, "<tr><td>m---------</td><td><a href=\"%sfile/.gitmodules.html\">",
                                        relpath);
                                xmlencode(fp, entrypath, strlen(entrypath));
       -                        git_submodule_free(module);
                                fputs("</a></td><td class=\"num\" align=\"right\"></td></tr>\n", fp);
                        }
                }