`hook.<label>.command` alone is inert; git also needs `event` to fire
the command on a hook. Without it, mirror pushes silently never ran.
Assisted-by: Claude Opus 4.7 (1M context) via Claude Code
COPY --from=builder /build/quire /usr/local/bin/quire
# Configure git hooks globally so all repos inherit the post-receive dispatch.
-RUN git config --system hook.postReceive.command "quire hook post-receive"
+# `hook.<label>` is an arbitrary identifier; the hook is bound to an event
+# via `event` and run via `command`.
+RUN git config --system hook.quire.event "post-receive" \
+ && git config --system hook.quire.command "quire hook post-receive"
# Volume layout per PLAN.md. Ownership is set on the host; the container
# runs as the host uid/gid passed via `docker exec --user`, so no user
/// but it remains visible in `/proc/<pid>/environ` to anything running
/// as the same uid for the lifetime of the push. Acceptable today
/// (single-user container, no CI runner yet); revisit when CI lands.
- pub fn push_to_mirror(&self, mirror: &MirrorConfig, token: &str, refs: &[&str]) -> crate::Result<()> {
+ pub fn push_to_mirror(
+ &self,
+ mirror: &MirrorConfig,
+ token: &str,
+ refs: &[&str],
+ ) -> crate::Result<()> {
let mut args = vec!["push", "--porcelain", &mirror.url];
args.extend(refs);