Take theirs, the release branch is newer REL-250

Open2 versionsGit · Easy · Fix · about 20 min ·Linux

Lab machine

A private Linux machine with the problem already set up. Sessions last up to 60 minutes.
Dmitri Vos opened REL-250 at 15:30task

The 2.5.0 release merge stopped on a conflict in the release notes. The deploy freeze lifts in 30 minutes, and the release channel says to take theirs.

Both branches changed the same part of the release note for good reasons. The release branch moved it to 2.5.0. While it was open, main changed the note for a reason of its own. Find out what, and why, before you resolve anything.

"Just take theirs, the release branch is newer." (release channel)

Taking either side whole loses the other side's reason. The release note is the document someone will follow at 3 a.m. if 2.5.0 goes wrong.

Your task

Resolve RELEASE_NOTES.md so it describes 2.5.0 and its rollback uses shipctl with the 2.4.0 artifact, keep both branches' other changes, pass the release-note gate, and commit the merge.

On the machine

  • repo/ with the merge in progress on main
  • git log --merge -p -- RELEASE_NOTES.md: why each side changed the line
  • scripts/check-release-note.sh, the release-note CI gate

Timeline

MonMain replaces waybill-deploy with shipctl: the old tool exits 0 without rolling back.
Tuerelease/2.5 updates the rollback target to 2.4.0, still using waybill-deploy.
15:28git merge release/2.5 stops on RELEASE_NOTES.md.
15:30"Just take theirs." Freeze lifts at 16:00.

Done when

  1. The committed note describes 2.5.0 and its artifact digest.
  2. Its rollback command returns to the 2.4.0 artifact, with the tool main's runbook says to use.
  3. The merge is committed on main with no conflict markers left.
  4. What main changed in the note while release/2.5 was open survives, and so do both branches' other changes.

Hints

Hint 1

Read both changes, not just “ours” and “theirs.” `git log --merge -p -- RELEASE_NOTES.md` shows why each side changed the line.

Hint 2

What main changed and what the release branch changed are independent facts, even when they touch the same line.

Hint 3

The right line takes main's change and the release branch's change together.

Hint 4

Run the repository's release-note gate before you commit.

Show the solution

Read why each side changed the conflicting line: `git log --merge -p -- RELEASE_NOTES.md`. The release branch moved the note to 2.5.0 (new version, new artifact digest, rollback to 2.4.0). Main changed the same lines for an unrelated reason: it replaced the retired `waybill-deploy` with `shipctl`, or moved the artifact to the `cr.northstar.example` registry. Write the lines with both changes, run `scripts/check-release-note.sh`, `git add RELEASE_NOTES.md`, and `git commit` to conclude the merge.