title | linkTitle | description | weight | type | aliases | |
---|---|---|---|---|---|---|
Default Branch Migration |
Default Branch Migration |
Instructions on how to migrate the default branch from master to main.
|
99 |
docs |
|
This document outlines steps needed to migrate the default branch
of your repo from master
to main
.
Note: This document is currently a work in progress.
If you have questions about the process, reach out to the GitHub Management Team on the #github-management channel on slack or open an issue in the kubernetes/org repo.
-
Create an issue in your repo to track the branch rename. You can paste this checklist in the issue body.
-
If you are not a root approver for the repo, assign a root approver for approval.
-
Once the issue has been approved, send a notice to your SIG's mailing list about the potential branch rename.
Make the following changes before renaming the branch the master
branch.
Note: There might be additional changes required that have not been covered in this checklist.
Note: There might be additional information available in the umbrella issue via [kubernetes/org#2222].
These changes are non-disruptive and can be made anytime before renaming the branch.
-
If a presubmit or postsubmit prowjob triggers on the
master
branch (branches
field of the prowjob), add themain
branch to the list (see kubernetes/test-infra#20665 for an example). -
If the
milestone_applier
prow config references themaster
branch, add themain
branch to the config (see kubernetes/test-infra#20675 for an example). -
If the
branch_protection
prow config references themaster
branch, add themain
branch to the config.
These changes are disruptive and should be made just before renaming the branch.
-
For periodic prowjobs, or any prowjob that mentions the
master
branch inbase_ref
, update them to themain
branch. Ensure that these changes happen in lock-step with the branch rename (jobs triggered in between landing these changes and renaming the branch will fail).- For bootstrap-based jobs, ensure the branch is explicitly specified,
e.g.
kubernetes/foo=main
. kubernetes/test-infra#20667 may eventually allow for non-disruptive changes. - For pod-utils based jobs, ensure the branch is explicitly specified,
e.g.
base_ref: main
. kubernetes/test-infra#20672 may eventually allow for non-disruptive changes.
- For bootstrap-based jobs, ensure the branch is explicitly specified,
e.g.
-
If a prowjob mentions
master
in its name, rename the job to not include the branch name, e.g.pull-repo-verify-master
->pull-repo-verify
.status-reconciler
should automatically migrate PR status contexts to the new job name, and retrigger accordingly, but we have anecdotally found it sometimes misses changes.- NOTE: our infrastructure doesn't understand the concept of job renames, so from the perspective of e.g. https://testgrid.k8s.io the job will appear to have lost history and start from scratch.
-
If a prowjob calls scripts or code in your repo that explicitly reference
master
, update all references to usemain
, or auto-detect the remote branch- e.g. using git to auto-detect
# for existing clones, update their view of the remote git fetch origin git remote set-head origin -a # for new clones, or those updated as above, this prints "main" post-rename echo $(git symbolic-ref refs/remotes/origin/HEAD)
- e.g. using github's api to auto-detect
# gh is https://github.com/cli/cli, this will print "main" post-rename gh api /repos/kubernetes-sigs/slack-infra | jq -r .default_branch
-
If the repo has netlify configured for it, ask a member of the GitHub Management Team to rename the
master
branch tomain
in the netlify site config. It can't be controlled through the netlify config in the repo.
- Once all non-disruptive tasks have been completed and disruptive tasks have been identified, assign the GitHub Management team (@kubernetes/owners) for approval.
- Rename the default branch from
master
tomain
using the GitHub UI by following the official instructions.
After the default branch has been renamed to main
, make the following
changes.
Note: There might be additional changes required that have not been covered in this checklist.
- If a prowjob still references the
master
branch in thebranches
field, remove themaster
branch (see kubernetes/test-infra#20669 for an example).
-
If the
milestone_applier
prow config references themaster
branch, remove it from the config. -
If the
branch_protection
prow config references themaster
branch, remove it from the config.
-
If any docs reference the
master
branch, update tomain
(URLs will be automatically redirected). -
Ensure that CI and PR tests work fine.
- If there are any outstanding PRs you can /approve to merge, do so to verify that presubmits and postsubmits work as expected
-
Trial the local development experience with a pre-rename clone.
- ensure Github instructions to rename your local branch work
- consider updating your fork's default remote branch name such that if you
have git autocompletion enabled, typing
ma<tab>
will autocomplete tomain
-
Send a notice about the branch rename to your SIG's mailing list. Include the link to the GitHub instructions to rename your local branch.