Merge blockers

GitLab reports why a merge request cannot merge, as one of 24 detailedMergeStatus values. labdash maps every one of them to a phrase, a colour token and a glyph, and prints it in the row.

blocker-column
Nine merge requests, nine different reasons, all readable from the table.

The values

GitLab valueShown asMeaning
MERGEABLEreadyNothing is in the way
CONFLICTconflictsNeeds a rebase or a manual resolution
CI_MUST_PASSci failedThe pipeline is red and the project requires it
CI_STILL_RUNNINGci runningWaiting on the pipeline
NOT_APPROVEDneeds 1The count is the number of approvals still required
DISCUSSIONS_NOT_RESOLVED3 threads openThe count is unresolved threads
DRAFT_STATUSdraftMarked as a work in progress
NEED_REBASEneeds rebaseFast-forward-only project, behind the target
BLOCKED_STATUSblocked by 2Another merge request must land first
REQUESTED_CHANGESchanges requestedA reviewer asked for changes
CHECKING / UNCHECKEDchecking…GitLab is still working it out
BROKEN_STATUScannot mergeThe merge itself would fail
NOT_OPENclosedNot open
EXTERNAL_STATUS_CHECKSexternal checkAn external status check has not passed
POLICIES_DENIEDpolicy blockedA security or compliance policy denied it

No value falls through to the raw enum. A test fails while any value in the pinned schema is unmapped, and a value added by a future GitLab release is title-cased and logged rather than dropped, so the cell stays readable.

Colours and glyphs

Every state carries a glyph, a colour and a word, so the column survives a colour-blind reader, a NO_COLOR terminal, and a screenshot.

BlockerColourWhose move
conflicts · ci failed · cannot merge · blocked by n · changes requestederrorThe author's
needs 1 · n threads open · needs rebase · external checkwarningUsually a reviewer's
ci runningrunningNobody's
readysuccessYours, if you are the one who merges it
draft · checking… · closedmutedNot actionable

A failed job marked allow_failure renders as a warning rather than an error, so red keeps meaning something is broken.

What you can do

KeyActionKeyAction
vapprove, which clears needs nUupdate the branch, which clears needs rebase
Rretry the head pipeline, for ci failedLjump to the failing job's log
]preview tab: which approval rule is unmetoopen in the browser, for conflicts

Filtering on a blocker

The column is always drawn, and it never drops on a narrow terminal. Two filters worth a tab:

  • Ready to merge. Browse to your group, then state:opened draft:false approved:true, then P.
  • Stuck on me. From the review queue, approved-by-me:false, then P.

5 is the conflicts quick filter, for the same thing without typing.

Approval rule detail

needs 1 gives the count. The preview's Approvals tab names the rule:

approvals-tab