fix: handle detached HEAD in PR workflows#94
Open
danielsuguimoto wants to merge 1 commit intokompassdev:mainfrom
Open
fix: handle detached HEAD in PR workflows#94danielsuguimoto wants to merge 1 commit intokompassdev:mainfrom
danielsuguimoto wants to merge 1 commit intokompassdev:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket
SKIPPED
Summary
Fixes a failure in
pr/reviewandpr/fixcommands when run inside GitHub Actions CI/CD pipelines. By default,actions/checkout@v4onpull_requestevents checks out the PR merge commit in detached HEAD mode — meaninggit branch --show-currentreturns empty. The branch alignment logic previously treated any mismatch as a checkout target, but without the branch being fetched locally the checkout would fail and the command would stop.Root Cause
GitHub Actions
pull_requestworkflows run on a detached HEAD pointing to the synthetic merge commit (refs/pull/N/merge), not the PR head branch. The old logic compared<current-branch>against<pr-branch>and immediately triedgit checkout <pr-branch>on mismatch — which fails because the branch ref is not available locally in a shallow CI clone.Changes
git rev-parse HEAD→<current-head>to theload-prcomponent to capture the current commit SHA alongside the branch namepr/reviewandpr/fixfrom a two-way to a three-way check:<current-branch>equals<pr-branch>→ already on the correct branch, proceed<current-branch>is empty (detached HEAD) and<current-head>matchespr.headRefOid→ already at the correct commit, skip checkoutgit fetch origin <pr-branch>first to ensure the branch is available locally, then checkoutref: ${{ github.head_ref }}in the caller's workflowref: ${{ github.head_ref }}to the checkout step in the Kompass CI workflow so the runner checks out the named branch directly, avoiding detached HEAD entirely and hitting the fast path in the alignment logic