stagit-post-receive.sh (1726B)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #!/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}/pub/${name}" htmldir="/var/www/htdocs/git.skec.site" 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 # TODO: fix #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 d=$(basename "${name}") printf "[%s] stagit HTML pages... " "${d}" mkdir -p "${destdir}/pub/${d}" cd "${destdir}/pub/${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}/pub/"*/ > "${destdir}/index.html" # make pages. stagit -c "${cachefile}" -u "https://git.skec.site/pub/${d}/" "${reposdir}/pub/${d}" ln -sf log.html index.html ln -sf ../../style.css style.css ln -sf ../../logo.png logo.png echo "done" |