minor modifications to stagit
Find a file
Hiltjo Posthuma 1a3584e2d0 cache support (-c option)
"Optionally the -c cachefile option can be used to cache the entries of
the log page up to the point of the last commit. The cachefile will store
the last commit id and the entries in the HTML table."

this caches the diffstat and commits, it is an expensive operation (twss).
2016-05-02 21:17:52 +02:00
compat.h Always use the compat functions 2016-01-06 17:07:47 +00:00
config.def.h replace file size with line count for text files 2016-01-13 21:58:08 +01:00
config.mk Makefile: separate CPPFLAGS, compile optimized build by default 2016-03-20 16:23:33 +01:00
example.sh example.sh: fix: sort list (regression from simplifying the script) 2016-04-29 21:52:29 +02:00
favicon.png add favicon 2015-12-07 14:41:54 +01:00
LICENSE LICENSE: whoops its already 2016 2016-01-06 18:58:20 +01:00
logo.png initial insertion 2015-12-04 16:58:04 +01:00
Makefile clean generated tarball too 2016-03-25 09:30:19 +00:00
README README: minor update 2016-05-01 14:51:11 +02:00
reallocarray.c Bring in reallocarray() from OpenBSD 2016-01-06 17:03:42 +00:00
stagit-index.1 stagit-index: clarify order of the list 2016-01-08 13:44:22 +01:00
stagit-index.c fix times (and timezone) 2016-05-01 16:56:58 +02:00
stagit.1 cache support (-c option) 2016-05-02 21:17:52 +02:00
stagit.c cache support (-c option) 2016-05-02 21:17:52 +02:00
strlcat.c Bring in reallocarray() from OpenBSD 2016-01-06 17:03:42 +00:00
strlcpy.c Bring in reallocarray() from OpenBSD 2016-01-06 17:03:42 +00:00
style.css optimization: read stats once and remember it 2016-04-30 12:47:00 +02:00
TODO check path truncation 2016-02-24 14:47:20 +01:00

stagit
======

static git page generator


Usage
-----

Make files per repository:

	$ mkdir -p htmldir && cd htmldir
	$ stagit path-to-repo

Make index file for repositories:

	$ stagit-index repodir1 repodir2 repodir3 > index.html


Install
-------

$ make
# make install


Dependencies
------------

- libgit2 (v0.22+).
- libc (tested with OpenBSD, FreeBSD, glibc and musl).
- C compiler (C99).
- make


Documentation
-------------

See man pages: stagit(1) and stagit-index(1).


Features
--------

- 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.


Cons
----

- 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 after it 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.