Introduction
Introduction Statistics Contact Development Disclaimer Help
tDon't fail on submodules - stagit - static git page generator
git clone git://src.adamsgaard.dk/stagit
Log
Files
Refs
README
LICENSE
---
commit 571076b419daec91efb5e5d39dd17066e43805bc
parent 28730218c4b68e9b3a0f7ce628868bb647d97f9e
Author: z3bra <willyatmailoodotorg>
Date: Fri, 29 Apr 2016 01:40:30 +0200
Don't fail on submodules
Submodules will get listed prefixed with a '@', using a specific CSS class for
styling. The href will be set to the url of the submodule.
Filesize will appear as 0 and filemode will not be printed to avoid an awkward
mode: "?---------".
In writefilestree, we don't return anymore if an entry can't be categorized as
an object, but rather, fail if we can't retrieve its name.
Diffstat:
M stagit.c | 69 ++++++++++++++++++-----------…
M style.css | 4 ++++
2 files changed, 44 insertions(+), 29 deletions(-)
---
diff --git a/stagit.c b/stagit.c
t@@ -653,6 +653,7 @@ int
writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path)
{
const git_tree_entry *entry = NULL;
+ git_submodule *module = NULL;
const char *entryname;
char filepath[PATH_MAX], entrypath[PATH_MAX];
git_object *obj = NULL;
t@@ -663,29 +664,13 @@ writefilestree(FILE *fp, git_tree *tree, const char *bra…
count = git_tree_entrycount(tree);
for (i = 0; i < count; i++) {
if (!(entry = git_tree_entry_byindex(tree, i)) ||
- git_tree_entry_to_object(&obj, repo, entry))
+ !(entryname = git_tree_entry_name(entry)))
return -1;
- entryname = git_tree_entry_name(entry);
r = snprintf(entrypath, sizeof(entrypath), "%s%s%s",
path, path[0] ? "/" : "", entryname);
if (r == -1 || (size_t)r >= sizeof(entrypath))
errx(1, "path truncated: '%s%s%s'",
path, path[0] ? "/" : "", entryname);
- switch (git_object_type(obj)) {
- case GIT_OBJ_BLOB:
- break;
- case GIT_OBJ_TREE:
- /* NOTE: recurses */
- ret = writefilestree(fp, (git_tree *)obj, branch,
- entrypath);
- git_object_free(obj);
- if (ret)
- return ret;
- continue;
- default:
- git_object_free(obj);
- continue;
- }
r = snprintf(filepath, sizeof(filepath), "file/%s%s%s.html",
path, path[0] ? "/" : "", entryname);
t@@ -693,20 +678,46 @@ writefilestree(FILE *fp, git_tree *tree, const char *bra…
errx(1, "path truncated: 'file/%s%s%s.html'",
path, path[0] ? "/" : "", entryname);
- filesize = git_blob_rawsize((git_blob *)obj);
+ if (!git_tree_entry_to_object(&obj, repo, entry)) {
+ switch (git_object_type(obj)) {
+ case GIT_OBJ_BLOB:
+ break;
+ case GIT_OBJ_TREE:
+ /* NOTE: recurses */
+ ret = writefilestree(fp, (git_tree *)obj, bran…
+ entrypath);
+ git_object_free(obj);
+ if (ret)
+ return ret;
+ continue;
+ default:
+ git_object_free(obj);
+ continue;
+ }
- lc = writeblob(obj, filepath, entryname, filesize);
+ filesize = git_blob_rawsize((git_blob *)obj);
+ lc = writeblob(obj, filepath, entryname, filesize);
- fputs("<tr><td>", fp);
- fputs(filemode(git_tree_entry_filemode(entry)), fp);
- fprintf(fp, "</td><td><a href=\"%s%s\">", relpath, filepath);
- xmlencode(fp, entrypath, strlen(entrypath));
- fputs("</a></td><td class=\"num\">", fp);
- if (showlinecount && lc > 0)
- fprintf(fp, "%dL", lc);
- else
- fprintf(fp, "%juB", (uintmax_t)filesize);
- fputs("</td></tr>\n", fp);
+ fputs("<tr><td>", fp);
+ fputs(filemode(git_tree_entry_filemode(entry)), fp);
+ fprintf(fp, "</td><td><a href=\"%s%s\">", relpath, fil…
+ xmlencode(fp, entrypath, strlen(entrypath));
+ fputs("</a></td><td class=\"num\">", fp);
+ if (showlinecount && lc > 0)
+ fprintf(fp, "%dL", lc);
+ else
+ fprintf(fp, "%juB", (uintmax_t)filesize);
+ fputs("</td></tr>\n", fp);
+ } else if (git_submodule_lookup(&module, repo, entryname) == 0…
+
+ fprintf(fp, "<tr><td></td><td><a class=\"module\" href…
+ git_submodule_url(module));
+ xmlencode(fp, entrypath, strlen(entrypath));
+ fprintf(fp, "</a></td><td class=\"num\">0%c",
+ showlinecount ? 'L' : 'B');
+ git_submodule_free(module);
+ fputs("</td></tr>\n", fp);
+ }
}
return 0;
diff --git a/style.css b/style.css
t@@ -58,6 +58,10 @@ table td {
white-space: normal;
}
+a.module {
+ color: #777;
+}
+
td.num {
text-align: right;
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.