tAdd own create.sh and post-receive.sh - stagit - static git page generator
 (HTM) git clone git://src.adamsgaard.dk/stagit
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8dd7a4f41b2bdf83d03d48833d70cf20e5d66d54
 (DIR) parent c5329d68ce5748f34cb2d8a443e04e9794d07f19
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Thu,  2 Jan 2020 22:08:57 +0100
       
       Add own create.sh and post-receive.sh
       
       Diffstat:
         A create.sh                           |      43 ++++++++++++++++++++++++++++++
         A post-receive.sh                     |      73 +++++++++++++++++++++++++++++++
       
       2 files changed, 116 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/create.sh b/create.sh
       t@@ -0,0 +1,43 @@
       +#!/bin/sh
       +# - Makes index for repositories in a single directory.
       +# - Makes static pages for each repository directory.
       +#
       +# 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
       +# - sh example_create.sh
       +
       +# path must be absolute.
       +reposdir="/home/git"
       +curdir="$(pwd)"
       +
       +# make index.
       +stagit-index "${reposdir}/"*/ > "${curdir}/index.html"
       +
       +# make files per repo.
       +for dir in "${reposdir}/"*/; do
       +        # strip .git suffix.
       +        r=$(basename "${dir}")
       +        d=$(basename "${dir}" ".git")
       +        printf "%s... " "${d}"
       +
       +        mkdir -p "${curdir}/${d}"
       +        cd "${curdir}/${d}" || continue
       +        stagit -c ".cache" "${reposdir}/${r}"
       +
       +        # symlinks
       +        ln -sf log.html index.html
       +        ln -sf ../style.css style.css
       +        ln -sf ../logo.png logo.png
       +        ln -sf ../favicon.png favicon.png
       +
       +        echo "done"
       +done
 (DIR) diff --git a/post-receive.sh b/post-receive.sh
       t@@ -0,0 +1,73 @@
       +#!/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.
       +
       +# NOTE: needs to be set for correct locale (expects UTF-8) otherwise the
       +#       default is LC_CTYPE="POSIX".
       +export LC_CTYPE="en_US.UTF-8"
       +
       +name="$1"
       +if test "${name}" = ""; then
       +        name=$(basename "$(pwd)")
       +fi
       +
       +# config
       +# paths must be absolute.
       +reposdir="/home/git"
       +dir="${reposdir}/${name}"
       +htmldir="/var/www/domains/src.adamsgaard.dk"
       +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
       +        test "${old}" = "0000000000000000000000000000000000000000" && continue
       +        test "${new}" = "0000000000000000000000000000000000000000" && continue
       +
       +        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
       +
       +echo "done"