| tAdd own create.sh and post-receive.sh - stagit - static git page generator | |
| git clone git://src.adamsgaard.dk/stagit | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 8dd7a4f41b2bdf83d03d48833d70cf20e5d66d54 | |
| parent c5329d68ce5748f34cb2d8a443e04e9794d07f19 | |
| Author: Anders Damsgaard <[email protected]> | |
| 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(-) | |
| --- | |
| 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 | |
| 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" |