hookc
hookc
is a helper binary for Git server-side hooks that relays the hook’s
context to a persistent daemon via a UNIX domain socket and communicates back
any relevant responses.
It is intended to be invoked by git-receive-pack
for hooks such as
pre-receive
, update
, and post-receive
.
Environment variables
LINDENII_FORGE_HOOKS_SOCKET_PATH
: Absolute path to the UNIX domain socket on which the daemon is listening.LINDENII_FORGE_HOOKS_COOKIE
: 64-character authentication cookie used to validate the hook client to the daemon.
Operation
lindenii-forge-hookc collects the following information and sends it to the daemon:
- All command-line arguments
- All
GIT_*
environment variables - The raw hook stdin (e.g., old/new ref triplets for pre-receive)
After sending this data, it waits for a one-byte status code from the daemon,
which becomes hookc
’s own exit status.
If the daemon sends any output afterward, it is forwarded to standard error and
will appear as remote:
output to the user.
Known issues
- The status byte from the daemon currently must be sent before any stderr output.
- Currently assumes stdin and stderr are pipes, which is not guaranteed in future versions of Git.