diff options
Diffstat (limited to 'third_party/git/Documentation/howto/rebuild-from-update-hook.txt')
-rw-r--r-- | third_party/git/Documentation/howto/rebuild-from-update-hook.txt | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/third_party/git/Documentation/howto/rebuild-from-update-hook.txt b/third_party/git/Documentation/howto/rebuild-from-update-hook.txt deleted file mode 100644 index db219f5c0745..000000000000 --- a/third_party/git/Documentation/howto/rebuild-from-update-hook.txt +++ /dev/null @@ -1,90 +0,0 @@ -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. |