microsoft / microsoft/go

Improve the process to apply infra fixes from `microsoft/main` onto release branches

Open
#145 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
431
Forks
44
Avg merge
21h 18m
Merged PRs (30d)
30

Description

As of writing (starting to add release branch infra: https://github.com/microsoft/go/issues/128), it seems that the most reasonable way to apply infra fixes from microsoft/main onto release branches is cherry-picking. A few ideas to improve that process:


Automate the cherry-picks.

  • This can be done with a GitHub Action with a comment trigger like dotnet/runtime's.
  • We could create a bot that automatically cherry-picks PRs (based on a tag?) onto each currently maintained release branch to make it harder to forget, and potentially batch changes.

Periodically copy all build infra files from microsoft/main to all release branches.

  • It seems like there would be significant maintenance overhead and risk involved with making a single version of the infra files always work on every single branch all the time. We should try to be sure that it's actually worthwhile before going with this approach rather than cherry-picking.

Make "fake" merges that carry infrastructure changes but ignore changes from the upstream commits.

  • This provides a hint baked into Git about the last time changes were merged across. You can merge again and only merge "new" commits. However:
    • Merging doesn't distinguish upstream and Microsoft-infra commits. You need to essentially cherry-pick the infra commits to create the new "fake" merge commit.
    • Which way(s) should merges flow? This is part of determining how difficult the system will be to maintain.
    • What if the release branch intentionally has slightly different infra? Does this cause a lot of unnecessary merge conflicts?
  • I'm including this option for completeness--I don't see net benefits to this approach vs. others. It's possible I'm missing some reasons it could help, though.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing issue #128 and the referenced dotnet/runtime backport.yml workflow to compare approaches for applying infrastructure fixes across release branches. Evaluate cherry-picking, periodic copying, and fake merges, then document or implement a selected process with clear branch coverage and maintenance expectations.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, github-actions, go
Domain
build-system, infrastructure, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.