improve example, add initial post-receive example
This commit is contained in:
parent
0f428f1b5a
commit
4e307d3076
|
@ -2,11 +2,14 @@
|
||||||
# - Makes index for repositories in a single directory.
|
# - Makes index for repositories in a single directory.
|
||||||
# - Makes static pages for each repository directory.
|
# - Makes static pages for each repository directory.
|
||||||
#
|
#
|
||||||
# NOTE, things to do manually (once):
|
# NOTE, things to do manually (once) before running this script:
|
||||||
# - copy style.css, logo.png and favicon.png manually, a style.css example
|
# - copy style.css, logo.png and favicon.png manually, a style.css example
|
||||||
# is included.
|
# is included.
|
||||||
|
#
|
||||||
# - write clone url, for example "git://git.codemadness.org/dir" to the "url"
|
# - write clone url, for example "git://git.codemadness.org/dir" to the "url"
|
||||||
# file for each repo.
|
# file for each repo.
|
||||||
|
# - write owner of repo to the "owner" file.
|
||||||
|
# - write description in "description" file.
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# - mkdir -p htmldir && cd htmldir
|
# - mkdir -p htmldir && cd htmldir
|
||||||
|
|
65
example_post-receive.sh
Executable file
65
example_post-receive.sh
Executable file
|
@ -0,0 +1,65 @@
|
||||||
|
#!/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.
|
||||||
|
|
||||||
|
name="$1"
|
||||||
|
if test "$name" = ""; then
|
||||||
|
name="$(basename $(pwd))"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# config
|
||||||
|
# paths must be absolute.
|
||||||
|
reposdir="/home/src/src"
|
||||||
|
dir="${reposdir}/${name}"
|
||||||
|
htmldir="/home/www/domains/git.codemadness.org/htdocs"
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
printf "done\n"
|
Loading…
Reference in a new issue