stagit

My fork of stagit

git clone git://git.shimmy1996.com/stagit.git

example_post-receive.sh (1712B)

    1 #!/bin/sh
    2 # generic git post-receive hook.
    3 # change the config options below and call this script in your post-receive
    4 # hook or symlink it.
    5 #
    6 # usage: $0 [name]
    7 #
    8 # if name is not set the basename of the current directory is used,
    9 # this is the directory of the repo when called from the post-receive script.
   10 
   11 # NOTE: needs to be set for correct locale (expects UTF-8) otherwise the
   12 #       default is LC_CTYPE="POSIX".
   13 export LC_CTYPE="en_US.UTF-8"
   14 
   15 name="$1"
   16 if test "${name}" = ""; then
   17 	name=$(basename "$(pwd)")
   18 fi
   19 
   20 # config
   21 # paths must be absolute.
   22 reposdir="/home/src/src"
   23 dir="${reposdir}/${name}"
   24 htmldir="/home/www/domains/git.codemadness.org/htdocs"
   25 stagitdir="/"
   26 destdir="${htmldir}${stagitdir}"
   27 cachefile=".htmlcache"
   28 # /config
   29 
   30 if ! test -d "${dir}"; then
   31 	echo "${dir} does not exist" >&2
   32 	exit 1
   33 fi
   34 cd "${dir}" || exit 1
   35 
   36 # detect git push -f
   37 force=0
   38 while read -r old new ref; do
   39 	test "${old}" = "0000000000000000000000000000000000000000" && continue
   40 	test "${new}" = "0000000000000000000000000000000000000000" && continue
   41 
   42 	hasrevs=$(git rev-list "${old}" "^${new}" | sed 1q)
   43 	if test -n "${hasrevs}"; then
   44 		force=1
   45 		break
   46 	fi
   47 done
   48 
   49 # strip .git suffix.
   50 r=$(basename "${name}")
   51 d=$(basename "${name}" ".git")
   52 printf "[%s] stagit HTML pages... " "${d}"
   53 
   54 mkdir -p "${destdir}/${d}"
   55 cd "${destdir}/${d}" || exit 1
   56 
   57 # remove commits and ${cachefile} on git push -f, this recreated later on.
   58 if test "${force}" = "1"; then
   59 	rm -f "${cachefile}"
   60 	rm -rf "commit"
   61 fi
   62 
   63 # make index.
   64 stagit-index "${reposdir}/"*/ > "${destdir}/index.html"
   65 
   66 # make pages.
   67 stagit -c "${cachefile}" "${reposdir}/${r}"
   68 
   69 ln -sf log.html index.html
   70 ln -sf ../style.css style.css
   71 ln -sf ../logo.png logo.png
   72 
   73 echo "done"