clone url: git://git.m455.casa/repo2html
assets/post-receive
| 1 | #!/bin/sh |
| 2 | |
| 3 | # - place this file in the 'hooks' directory of a bare git repository |
| 4 | # - this assumes that repo2html is in your path |
| 5 | |
| 6 | # The toplevel path containing directories of static pages |
| 7 | [ "$REPO2HTML_PREFIX" ] || export REPO2HTML_PREFIX=/var/www/git |
| 8 | # The toplevel clone url for repos. |
| 9 | export REPO2HTML_DESCRIPTION="sherry's git repositories" |
| 10 | |
| 11 | # hueristic attempt to detect a reasonable default for the name of this repo |
| 12 | # you may want to adjust this if you have e.g. sub-directories containing repos |
| 13 | # whose structure you want to preserve on the webserver. |
| 14 | if repo_name="$(git config repo2html.dirname)"; then |
| 15 | : # repo name from git config; do nothing else |
| 16 | elif [ "$(git rev-parse --is-bare-repository)" = "true" ]; then |
| 17 | # bare /foo/bar/baz/myrepo.git -> myrepo |
| 18 | repo_name="$(basename "$(pwd)" .git)" |
| 19 | git config repo2html.dirname "$repo_name" |
| 20 | else |
| 21 | # /foo/bar/baz/myrepo/.git -> myrepo |
| 22 | repo_name="$(basename "$(dirname "$(pwd)")")" |
| 23 | git config repo2html.dirname "$repo_name" |
| 24 | fi |
| 25 | |
| 26 | # only generate if default branch is modified |
| 27 | headref="$(git symbolic-ref -q HEAD)" |
| 28 | while read -r _ _ ref |
| 29 | do [ "$ref" = "$headref" ] && go=1 |
| 30 | done |
| 31 | if [ "$go" ]; then |
| 32 | echo "$headref was updated; regenerating HTML at: $REPO2HTML_PREFIX/$repo_name" |
| 33 | else |
| 34 | echo "($headref was not updated so HTML will not be regenerated.)" |
| 35 | exit 0 |
| 36 | fi |
| 37 | |
| 38 | # check to see if we can even write to the specified directory |
| 39 | if mkdir -p "$REPO2HTML_PREFIX/$repo_name" && \ |
| 40 | [ -x "$REPO2HTML_PREFIX/$repo_name" ] && \ |
| 41 | [ -w "$REPO2HTML_PREFIX/$repo_name" ] |
| 42 | then |
| 43 | : # we can write to the directory; seems good |
| 44 | else |
| 45 | echo "Error: can't generate HTML due to insufficient permissions on path:" |
| 46 | echo " $REPO2HTML_PREFIX/$repo_name" |
| 47 | echo "Set REPO2HTML_PREFIX in the environment or this script:" |
| 48 | echo " $0" |
| 49 | exit 1 |
| 50 | fi |
| 51 | |
| 52 | # the second argument here should be a directory containing "default.html" |
| 53 | repo2html "$REPO2HTML_PREFIX/$repo_name" "path/to/directory/containing/template" |