3 # This script is called from the post-update hook, and when
4 # the master branch is updated, run in $HOME/git-doc, like
8 $ cat >hooks/post-update
11 *' refs/heads/master '*)
12 echo $HOME/git-doc/dodoc.sh | at now
15 exec git-update-server-info
16 $ chmod +x hooks/post-update
20 # $HOME/git-doc is a clone of the git.git repository and
21 # has the master branch checkd out. We update the working
22 # tree and build pre-formatted documentation pages, install
23 # in doc-htmlpages and doc-manapges subdirectory here.
24 # These two are their own git repository, and when they are
25 # updated the updates are pushed back into their own branches
26 # in git.git repository.
28 ID=`git-rev-parse --verify refs/heads/master` || exit $?
32 : ${PUBLIC=/pub/software/scm/git/docs} &&
33 : ${MASTERREPO=`pwd`} &&
34 : ${DOCREPO=`dirname "$0"`} &&
35 test "$DOCREPO" != "" &&
36 cd "$DOCREPO" || exit $?
39 trap 'rm -f "$tmp".*' 0
41 git pull "$MASTERREPO" master &&
42 git fetch --tags "$MASTERREPO" || exit $?
43 test $(git-rev-parse --verify refs/heads/master) == "$ID" &&
44 NID=$(git-describe --abbrev=4 "$ID") &&
45 test '' != "$NID" || exit $?
47 # Set up subrepositories
50 test -d doc-${type}pages || (
51 mkdir doc-${type}pages &&
52 cd doc-${type}pages &&
53 git init-db || exit $?
55 git fetch-pack "$MASTERREPO" ${type} |
60 git update-ref HEAD $sha1 &&
61 git checkout || exit $?
70 make >../:html.log 2>&1 \
71 -C Documentation -j 2 \
72 WEBDOC_DEST="$DOCREPO/doc-html-inst" install-webdoc || exit
74 make >../:man.log 2>&1 \
75 -C Documentation -j 2 \
76 man1="$DOCREPO/doc-man-inst/man1" \
77 man7="$DOCREPO/doc-man-inst/man7" \
78 man1dir="$DOCREPO/doc-man-inst/man1" \
79 man7dir="$DOCREPO/doc-man-inst/man7" install || exit
83 find doc-$type-inst -type f |
86 it=$(expr "$path" : doc-$type-inst/'\(.*\)') || continue
87 t="doc-${type}pages/$it"
88 test -f "$t" && diff -q "$path" "$t" && continue
90 echo ": $t" && rm -f "$t" && ln "$path" "$t" || exit
91 ( cd doc-${type}pages && git add "$it" )
94 find doc-$type-inst -type f |
95 sed -e 's|^doc-'$type'-inst/||' | sort >"$tmp.1" &&
96 (cd doc-${type}pages && git ls-files | sort) >"$tmp.2" &&
97 comm -13 "$tmp.1" "$tmp.2" |
98 ( cd doc-${type}pages && xargs rm -f -- ) || exit
103 if git commit -a -m "Autogenerated docs for $NID"
105 git send-pack "$MASTERREPO" master:refs/heads/$type
107 echo "* No changes in $type docs"
115 mv Documentation/git.html Documentation/saved-git-html
116 make >>../:html.log 2>&1 \
118 WEBDOC_DEST="$PUBLIC" ASCIIDOC_EXTRA='-a stalenotes' \
120 mv Documentation/saved-git-html Documentation/git.html
122 echo "* No public html at $PUBLIC"