stagit

custom fork of stagit
Index Commits Files Refs README LICENSE
commit 4e307d3076d88b0a8e096e23df8c78077542ab3e
parent 0f428f1b5abb7b6f42944a15e680980d18101353
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sat, 15 Jul 2017 13:50:24 +0200

improve example, add initial post-receive example

Diffstat:
Mexample.sh | 5++++-
Aexample_post-receive.sh | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/example.sh b/example.sh
@@ -2,11 +2,14 @@
 # - Makes index for repositories in a single directory.
 # - Makes static pages for each repository directory.
 #
-# NOTE, things to do manually (once):
+# NOTE, things to do manually (once) before running this script:
 # - copy style.css, logo.png and favicon.png manually, a style.css example
 #   is included.
+#
 # - write clone url, for example "git://git.codemadness.org/dir" to the "url"
 #   file for each repo.
+# - write owner of repo to the "owner" file.
+# - write description in "description" file.
 #
 # Usage:
 # - mkdir -p htmldir && cd htmldir
diff --git a/example_post-receive.sh b/example_post-receive.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+# generic git post-receive hook.
+# change the config options below and call this script in your post-receive
+# hook or symlink it.
+#
+# usage: $0 [name]
+#
+# if name is not set the basename of the current directory is used,
+# this is the directory of the repo when called from the post-receive script.
+
+name="$1"
+if test "$name" = ""; then
+    name="$(basename $(pwd))"
+fi
+
+# config
+# paths must be absolute.
+reposdir="/home/src/src"
+dir="${reposdir}/${name}"
+htmldir="/home/www/domains/git.codemadness.org/htdocs"
+stagitdir="/"
+destdir="${htmldir}${stagitdir}"
+cachefile=".htmlcache"
+# /config
+
+if ! test -d "$dir"; then
+    echo "$dir does not exist" >&2
+    exit 1
+fi
+cd "$dir" || exit 1
+
+# detect git push -f
+force=0
+while read -r old new ref; do
+    hasrevs=$(git rev-list "$old" "^$new" | sed 1q)
+    if test -n "$hasrevs"; then
+        force=1
+        break
+    fi
+done
+
+# strip .git suffix.
+r=$(basename "${name}")
+d=$(basename "${name}" ".git")
+printf "[%s] stagit HTML pages... " "${d}"
+
+mkdir -p "${destdir}/${d}"
+cd "${destdir}/${d}" || exit 1
+
+# remove commits and $cachefile on git push -f, this recreated later on.
+if test "$force" = "1"; then
+    rm -f "${cachefile}"
+    rm -rf "commit"
+fi
+
+# make index.
+stagit-index "${reposdir}/"*/ > "${destdir}/index.html"
+# make pages.
+stagit -c "${cachefile}" "${reposdir}/${r}"
+
+ln -sf log.html index.html
+ln -sf ../style.css style.css
+ln -sf ../logo.png logo.png
+
+printf "done\n"