Force-checkout remote branch to fix unrelated histories #228
+18
−32
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.
Checklist
step.yml
andREADME.md
is updated with the changes (if needed)Version
Requires a MAJOR/MINOR/PATCH version update
Context
Git clones can fail in persistent environments (bare-metal runners) when the build is triggered by a push event. Imagine this sequence:
origin/main
(because it's not a PR build) with--depth=1
(default step setting).origin/main
origin/main
again with--depth=1
, but when it tries to checkout and merge the local branch, it fails with therefusing to merge unrelated histories
error.An actual step log:
Changes
Branch checkout was implemented using a
fetch
+checkout
+merge remote local
sequence. This doesn't work in persistent envs because there is a leftover local branch from the previous run with a single commit (because of shallow fetching). The new remote-tracking branch also has a single commit, and there is no common ancestor of these two commits, so the merge command fails.This PR changes the implementation of our branch checkout so that any previous local branch state is overwritten, sort of like a
git pull --force
.The end result remains the same:
Investigation details
Decisions