Last modification on 2017-08-04
Stagit is a static page generator for git. It is similar in functionality to cgit.
My git repository uses stagit, you can see how it looks here: https://git.codemadness.org/.
- Log of all commits from HEAD.
- Log and diffstat per commit.
- Show file tree with linkable 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 log (atom.xml).
- Make index page for multiple repositories with stagit-index.
- After generating the pages (relatively slow) serving the files is very fast, simple and requires little resources (because the content is static), only a HTTP file server is required.
- Security: all pages are static. No CGI or dynamic code is run for the interface. Using it with a secure httpd such as OpenBSD httpd it is privilege-separated, chroot(2)'d and pledge(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 text-browsers such as dillo, links, lynx and w3m.
- Not suitable for large repositories (2000+ commits), because diffstats are an expensive operation.
- 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, like:
- snapshot tarballs.
- file tree per commit.
- history log of branches diverged from HEAD.
- stats (git shortlog -s).
This is by design, just use git locally or write some scripts.
git clone git://git.codemadness.org/stagit
Releases are available at: https://dl.2f30.org/releases/stagit-*.tar.gzDisclaimer: just as an extra side-note: I don't love or dislike cgit and actually use it myself for some projects aswell.