example_post-receive.sh - stagit-gopher - A git gopher frontend. (mirror)
HTML git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
example_post-receive.sh (1810B)
---
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 gopherdir="/home/www/gopher"
25 stagitdir="/"
26 destdir="${gopherdir}/${stagitdir}"
27 cachefile=".gphcache"
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 .gph 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 # remove /'s at the end.
64 stagitdir=$(printf "%s" "${stagitdir}" | sed 's@[/]*$@@g')
65
66 # make index.
67 stagit-gopher-index -b "${stagitdir}" "${reposdir}/"*/ > "${destdir}/index.gph"
68
69 # make pages.
70 stagit-gopher -b "${stagitdir}/${d}" -c "${cachefile}" \
71 -u "gopher://codemadness.org/1/git/$d/" "${reposdir}/${r}"
72
73 ln -sf log.gph index.gph
74
75 echo "done"