| <- Back | |
| # Stagit-gopher: a static git page generator for gopher | |
| Last modification on 2021-04-11 | |
| stagit-gopher is a static page generator for Gopher. It creates the pages as | |
| static »geomyidae« .gph files. stagit-gopher is a modified version from the | |
| HTML version of stagit. | |
| Read the README for more information about it. | |
| I also run a gopherhole and stagit-gopher, you can see how it looks here: | |
| gopher://codemadness.org/1/git/ | |
| »sacc« is a good Gopher client to view it. | |
| ## Features | |
| * Log of all commits from HEAD. | |
| * Log and diffstat per commit. | |
| * Show file tree with line numbers. | |
| * Show references: local branches and tags. | |
| * Detect README and LICENSE file from HEAD and link it as a webpage. | |
| * Detect submodules (.gitmodules file) from HEAD and link it as a webpage. | |
| * Atom feed of the commit log (atom.xml). | |
| * Atom feed of the tags/refs (tags.xml). | |
| * Make index page for multiple repositories with stagit-gopher-index. | |
| * After generating the pages (relatively slow) serving the files is very fast, | |
| simple and requires little resources (because the content is static), a | |
| geomyidae Gopher server is required. | |
| * Security: all pages are static. No CGI or dynamic code is run for the | |
| interface. Using it with a secure Gopher server such as geomyidae it is | |
| privilege-dropped and chroot(2)'d. | |
| * Simple to setup: the content generation is clearly separated from serving it. | |
| This makes configuration as simple as copying a few directories and scripts. | |
| * Usable with Gopher clients such as lynx and »sacc«. | |
| ## Cons | |
| * Not suitable for large repositories (2000+ commits), because diffstats are | |
| an expensive operation, the cache (-c flag) is a workaround for this in | |
| some cases. | |
| * Not suitable for large repositories with many files, because all files are | |
| written for each execution of stagit. This is because stagit shows the lines | |
| of textfiles and there is no "cache" for file metadata (this would add more | |
| complexity to the code). | |
| * Not suitable for repositories with many branches, a quite linear history is | |
| assumed (from HEAD). | |
| * Relatively slow to run the first time (about 3 seconds for sbase, | |
| 1500+ commits), incremental updates are faster. | |
| * Does not support some of the dynamic features cgit has (for HTTP), like: | |
| * Snapshot tarballs per commit. | |
| * File tree per commit. | |
| * History log of branches diverged from HEAD. | |
| * Stats (git shortlog -s). | |
| This is by design, just use git locally. | |
| ## Clone | |
| git clone git://git.codemadness.org/stagit-gopher | |
| ## Browse | |
| You can browse the source-code at: | |
| * https://git.codemadness.org/stagit-gopher/ | |
| * gopher://codemadness.org/1/git/stagit-gopher | |
| ## Download releases | |
| Releases are available at: | |
| * https://codemadness.org/releases/stagit-gopher/ | |
| * gopher://codemadness.org/1/releases/stagit-gopher |