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