stagit

git clone https://git.tarina.org/stagit
Log | Files | Refs | README | LICENSE

commit 5c278a600ea64c64f238e14d38dafbdbee6c9562
parent 671f4e91007a149e88b57788fc76059fbeac152e
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Fri, 29 Apr 2016 21:14:46 +0200

submodule support

- detect .gitmodules file for submodules, add a link "submodules" to the top menu.
- link each submodule to the .gitmodules file in HEAD.
- revert the special style for modules, but list it as a file "m---------", don't show
  the line/filesize though, it is not a file.

Diffstat:
Mstagit.c | 24+++++++++---------------
Mstyle.css | 4----
2 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/stagit.c b/stagit.c @@ -46,7 +46,7 @@ static char *name = ""; static char *stripped_name; static char description[255]; static char cloneurl[1024]; -static int hasreadme, haslicense; +static int haslicense, hasreadme, hassubmodules; void commitinfo_free(struct commitinfo *ci) @@ -251,6 +251,8 @@ writeheader(FILE *fp, const char *title) fprintf(fp, "<a href=\"%slog.html\">Log</a> | ", relpath); fprintf(fp, "<a href=\"%sfiles.html\">Files</a> | ", relpath); fprintf(fp, "<a href=\"%srefs.html\">Refs</a>", relpath); + if (hassubmodules) + fprintf(fp, " | <a href=\"%sfile/.gitmodules.html\">Submodules</a>", relpath); if (hasreadme) fprintf(fp, " | <a href=\"%sfile/README.html\">README</a>", relpath); if (haslicense) @@ -654,7 +656,7 @@ 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, *moduleurl; + const char *entryname; char filepath[PATH_MAX], entrypath[PATH_MAX]; git_object *obj = NULL; git_off_t filesize; @@ -709,21 +711,11 @@ writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path) fprintf(fp, "%juB", (uintmax_t)filesize); fputs("</td></tr>\n", fp); } else if (!git_submodule_lookup(&module, repo, entryname)) { - fputs("<tr><td>m---------</td><td>", fp); - if ((moduleurl = git_submodule_url(module))) { - fprintf(fp, "<a class=\"module\" href=\"%s\">", - moduleurl); - } + fprintf(fp, "<tr><td>m------</td><td><a href=\"%sfile/.gitmodules.html\">", + relpath); xmlencode(fp, entrypath, strlen(entrypath)); - if (moduleurl) { - fputs(" @", fp); - xmlencode(fp, moduleurl, strlen(moduleurl)); - fputs("</a>", fp); - } - fprintf(fp, "</td><td class=\"num\">0%c", - showlinecount ? 'L' : 'B'); git_submodule_free(module); - fputs("</td></tr>\n", fp); + fputs("</a></td><td class=\"num\"></td></tr>\n", fp); } } @@ -963,6 +955,8 @@ main(int argc, char *argv[]) /* check README */ hasreadme = !git_revparse_single(&obj, repo, "HEAD:README"); git_object_free(obj); + hassubmodules = !git_revparse_single(&obj, repo, "HEAD:.gitmodules"); + git_object_free(obj); /* log for HEAD */ fp = efopen("log.html", "w"); diff --git a/style.css b/style.css @@ -58,10 +58,6 @@ table td { white-space: normal; } -a.module { - color: #000; -} - td.num { text-align: right; }