Skip to content

ci: resolve merge conflicts caused by Action pins - #1015

Draft
Matthew John Cheetham (mjcheetham) wants to merge 1 commit into
microsoft:vfs-2.56.0from
mjcheetham:action-pinning-merge-conflicts
Draft

Matthew John Cheetham (mjcheetham) wants to merge 1 commit into
microsoft:vfs-2.56.0from
mjcheetham:action-pinning-merge-conflicts

Conversation

@mjcheetham

@mjcheetham Matthew John Cheetham (mjcheetham) commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Microsoft Git requires full commit SHAs for GitHub Actions, while the upstream workflows use symbolic refs. An upstream version update can therefore conflict with downstream pinning even when both changes can be preserved: keeping our side loses the update, while taking theirs drops the required pin.

Use the normal merge machinery on unpinned downstream contents, then pin the merged workflows again. Emulating the pin reversals and remerge with merge-tree avoids choosing one conflicted side or guessing how to edit markers, and preserves other downstream customizations.

Require the index and working tree to match an untouched ordinary conflicted merge before installing the result. Refuse if unpinning leaves any conflicts, since installing those files as an ordinary tree would incorrectly mark unrelated paths as resolved. A successful resolution is staged with the original merge parents intact, leaving the final merge commit to the maintainer.

The new path accepts only conflicted two-parent merges; clean merges paused before committing are rejected as well. The existing pin-refresh and commit behavior remains unchanged when no merge is in progress.

Microsoft Git requires full commit SHAs for GitHub Actions, while the
upstream workflows use symbolic refs. An upstream version update can
therefore conflict with downstream pinning even when both changes can
be preserved: keeping our side loses the update, while taking theirs
drops the required pin.

Use the normal merge machinery on unpinned downstream contents, then
pin the merged workflows again. Emulating the pin reversals and remerge
with merge-tree avoids choosing one conflicted side or guessing how to
edit markers, and preserves other downstream customizations.

Require the index and working tree to match an untouched ordinary
conflicted merge before installing the result. Refuse if unpinning
leaves any conflicts, since installing those files as an ordinary
tree would incorrectly mark unrelated paths as resolved. A successful
resolution is staged with the original merge parents intact, leaving
the final merge commit to the maintainer.

The new path accepts only conflicted two-parent merges; clean merges
paused before committing are rejected as well. The existing pin-refresh
and commit behavior remains unchanged when no merge is in progress.

Assisted-by: GPT-6.1 Sol
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant