Subject: [HOWTO] Using post-update hook
Message-ID: <7vy86o6usx.fsf@assigned-by-dhcp.cox.net>
From: Junio C Hamano <gitster@pobox.com>
Date: Fri, 26 Aug 2005 18:19:10 -0700
Abstract: In this how-to article, JC talks about how he
 uses the post-update hook to automate Git documentation page
 shown at https://www.kernel.org/pub/software/scm/git/docs/.
Content-type: text/asciidoc

How to rebuild from update hook
===============================

The pages under https://www.kernel.org/pub/software/scm/git/docs/
are built from Documentation/ directory of the git.git project
and needed to be kept up-to-date.  The www.kernel.org/ servers
are mirrored and I was told that the origin of the mirror is on
the machine $some.kernel.org, on which I was given an account
when I took over Git maintainership from Linus.

The directories relevant to this how-to are these two:

    /pub/scm/git/git.git/	The public Git repository.
    /pub/software/scm/git/docs/	The HTML documentation page.

So I made a repository to generate the documentation under my
home directory over there.

    $ cd
    $ mkdir doc-git && cd doc-git
    $ git clone /pub/scm/git/git.git/ docgen

What needs to happen is to update the $HOME/doc-git/docgen/
working tree, build HTML docs there and install the result in
/pub/software/scm/git/docs/ directory.  So I wrote a little
script:

    $ cat >dododoc.sh <<\EOF
    #!/bin/sh
    cd $HOME/doc-git/docgen || exit

    unset GIT_DIR

    git pull /pub/scm/git/git.git/ master &&
    cd Documentation &&
    make install-webdoc
    EOF

Initially I used to run this by hand whenever I push into the
public Git repository.  Then I did a cron job that ran twice a
day.  The current round uses the post-update hook mechanism,
like this:

    $ cat >/pub/scm/git/git.git/hooks/post-update <<\EOF
    #!/bin/sh
    #
    # An example hook script to prepare a packed repository for use over
    # dumb transports.
    #
    # To enable this hook, make this file executable by "chmod +x post-update".

    case " $* " in
    *' refs/heads/master '*)
            echo $HOME/doc-git/dododoc.sh | at now
            ;;
    esac
    exec git-update-server-info
    EOF
    $ chmod +x /pub/scm/git/git.git/hooks/post-update

There are four things worth mentioning:

 - The update-hook is run after the repository accepts a "git
   push", under my user privilege.  It is given the full names
   of refs that have been updated as arguments.  My post-update
   runs the dododoc.sh script only when the master head is
   updated.

 - When update-hook is run, GIT_DIR is set to '.' by the calling
   receive-pack.  This is inherited by the dododoc.sh run via
   the "at" command, and needs to be unset; otherwise, "git
   pull" it does into $HOME/doc-git/docgen/ repository would not
   work correctly.

 - The stdout of update hook script is not connected to git
   push; I run the heavy part of the command inside "at", to
   receive the execution report via e-mail.

 - This is still crude and does not protect against simultaneous
   make invocations stomping on each other.  I would need to add
   some locking mechanism for this.
