|
|
example_post-receive.sh - stagit-gopher - A git gopher frontend. (mirror) |
|
|
 |
git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ (git://bitreich.org) |
|
|
 |
Log |
|
|
 |
Files |
|
|
 |
Refs |
|
|
 |
Tags |
|
|
 |
README |
|
|
 |
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" |
|