Skip to content

merge queue: embarking main (8fcef7c) and #1405 together#1415

Closed
mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/d0903a1527
Closed

merge queue: embarking main (8fcef7c) and #1405 together#1415
mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/d0903a1527

Conversation

@mergify
Copy link
Copy Markdown
Contributor

@mergify mergify Bot commented May 12, 2026

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch main (8fcef7c) and #1405 are embarked together for merge.

This pull request has been created by Mergify to speculatively check the mergeability of #1405.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule default for merge:

Required conditions to stay in the queue:

---
checking_base_sha: 8fcef7c819ad5add9a60733b235f5ddf98f6a6a3
previous_failed_batches: []
pull_requests:
  - number: 1405
    scopes: []
scopes: []
...

jd and others added 3 commits May 12, 2026 09:38
Pins the contract for ``mergify ci git-refs`` so a future Rust
port can be validated against the same test that exercised the
Python implementation. The next commit ports the command; this
one lands first so it runs against Python at its own CI, then
against Rust on rebase — same test, both ends of the port.

The test runs in the existing live-tests harness but doesn't
need the live token: ``ci git-refs`` is locally evaluated (no
API call). The conftest fixture scrubs every CI provider env
var and runs in a tmp dir, so the detector lands on its literal
``HEAD^..HEAD`` fallback path. The assertion checks for ``Base:
HEAD^`` and ``Head: HEAD`` in stdout — output format that the
Python and Rust implementations share verbatim.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: Iae0e3fe5b4cc3b653529b80ae10bae6c83f3e53d
The Rust binary now serves ``mergify ci git-refs`` natively. The
Python implementation (``mergify_cli/ci/cli.py:git_refs``) and
its tests are removed in the same PR — port-and-delete keeps a
single live copy.

The previous commit landed a live-smoke test pinning the
``Base: HEAD^`` / ``Head: HEAD`` fallback contract. That same
test now exercises the Rust path.

The command detects the base/head git references for the
current build:

1. Buildkite env (``BUILDKITE_PULL_REQUEST`` and friends)
2. GitHub Actions event payload at ``$GITHUB_EVENT_PATH``
3. ``refs/notes/mergify/<branch>`` git notes (for merge-queue
   draft PRs created by the Mergify backend)
4. The MQ PR body's YAML metadata block (fallback for tools
   that can't read git notes)
5. Literal ``HEAD^..HEAD`` when none of the above match

Three output formats:

- ``text`` (default): ``Base: <ref>`` and ``Head: <ref>`` on
  two lines.
- ``shell``: ``MERGIFY_GIT_REFS_{BASE,HEAD,SOURCE}=...`` lines
  for ``eval``; values are properly shell-quoted.
- ``json``: a single JSON object ``{"base":..., "head":...,
  "source":...}``.

The command also writes ``base=...\nhead=...`` to
``$GITHUB_OUTPUT`` when set, and calls ``buildkite-agent
meta-data set`` when ``BUILDKITE=true``.

This commit introduces two shared helper modules in the
``mergify-ci`` crate that the next port (``ci queue-info``)
will reuse:

- ``github_event``: GitHub Actions event payload deserialization
  (``GITHUB_EVENT_PATH``).
- ``queue_metadata``: MQ YAML fenced-block extraction from PR
  bodies and git notes.

The notes reader is injected as a trait-object callback so unit
tests can exercise the note-driven detection path without
touching a real git repository; the production path shells out
via ``real_notes_reader``.

Adds the ``serde_yaml_ng`` dep (YAML parser) to the
``mergify-ci`` crate.

12 new git-refs + 2 format round-trip tests plus 8
event/metadata tests in the shared helpers. The Python
git-refs tests in ``mergify_cli/tests/ci/test_cli.py`` are
removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: I9a936b47b90f1128f6fdac6e4f29af6f1525a28c
@mergify mergify Bot deployed to Mergify Merge Protections May 12, 2026 14:04 Active
@mergify mergify Bot temporarily deployed to func-tests-live May 12, 2026 14:04 Inactive
@mergify mergify Bot closed this May 12, 2026
@mergify mergify Bot deleted the mergify/merge-queue/d0903a1527 branch May 12, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant