#18 Web-UI merge does not sync push mirrors (SSH push does)

open
Opened by atgreen

Summary

Merging a pull request through the web UI updates the repo's main on the forge but does not push the new commit to configured push mirrors. An SSH git push to the same repo does sync the mirror (post-receive prints "✓ Push mirror synced"). The web-merge code path skips that mirror sync.

Evidence (PR #17, design/audit-fixes → main)

After merging #17 via the web UI:

Ref Commit
Cave forge main ef334a3 (merge commit)
GitHub mirror main 5fab431 (pre-merge, stale)

A branch git push over SSH earlier in the same session reported ✓ Push mirror synced, so the mirror itself is configured and working — only the merge path misses it.

Impact

containers.yaml builds and publishes the :main image from the GitHub mirror. Because the mirror never received the merge, no image was built and production kept running the pre-merge build (footer Cave 0.1.0-g5fab431+dirty). Net effect: any PR merged from the web UI silently fails to build/deploy. Had to manually git push the merge commit to the mirror to unblock CI/CD.

Repro

  1. Configure a push mirror on a repo.
  2. Open a PR and merge it via the web UI (not an SSH push).
  3. Observe the mirror's HEAD does not advance to the merge commit.

Expected

The web-UI merge should run the same mirror-sync that the SSH post-receive hook runs, so merges propagate to mirrors (and therefore to mirror-driven CI/CD) the same way pushes do.

Likely cause

The server-side merge writes the merge commit directly into the git store and runs the internal post-receive logic, but does not invoke the mirror-push step that the SSH transport's post-receive path uses (see src/main.lisp post-receive / sync-mirrors and the merge route in src/server.lisp merge-pull-request-submit).

Comments (0)

No comments yet.