fix submodule lookup in bare repos - stagit - static git page generator | |
git clone git://git.codemadness.org/stagit | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 174a763058f9a90831ab5a2aeb1c9bfbecdabf48 | |
parent f05e6b0fcb3b874180970d06ebcde05fb5aea470 | |
Author: kst <[email protected]> | |
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(-) | |
--- | |
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 *pa… | |
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=\"%sfi… | |
relpath); | |
xmlencode(fp, entrypath, strlen(entrypath)); | |
- git_submodule_free(module); | |
fputs("</a></td><td class=\"num\" align=\"right\"></td… | |
} | |
} |