|
|
fix submodule lookup in bare repos - stagit - static git page generator |
|
|
 |
git clone git://git.codemadness.org/stagit (git://git.codemadness.org) |
|
|
 |
Log |
|
|
 |
Files |
|
|
 |
Refs |
|
|
 |
README |
|
|
 |
LICENSE |
|
|
|
--- |
|
|
 |
commit 174a763058f9a90831ab5a2aeb1c9bfbecdabf48 |
|
|
 |
parent f05e6b0fcb3b874180970d06ebcde05fb5aea470 |
|
|
 |
Author: kst <nil@krj.st> (mailto://) |
application/vnd.sailingtracker.track |
|
|
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 *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); |
|
|
|
} |
|
|
|
} |
|