/
Effectiveness of Tool: GitHub native rename - Samvera Branch Renaming Working Group
Effectiveness of Tool: GitHub native rename - Samvera Branch Renaming Working Group
Summary of Observations
- Renaming in GitHub does not change localhost, links to master from wiki pages, issues, or PR comments.
- Renaming in GitHub does change branch name, branch settings, PR base branch.
- Renaming a branch other than master that is in a PR waiting to merge into another branch, closes the PR.
- Once renamed, instructions are provided for renaming at localhost. Once those are cleared, I couldn't find a way to get them back. I tried renaming another branch, but they still were not shown again.
- Once master is renamed, a user can push master to the repo again. There were no settings in Settings → Branches → add rule, that would prevent the master branch from being created again in the repo.
Setup
- Create a test repo with a master branch, issues, PRs - See samvera-labs/branch-renaming-wg for a script to do this. This script sets up conditions in the test repo:
- Default branch is master
- add branch settings for master branch under Settings → Branches
- Conditions to set up manually:
- Within the test repo, create a wiki page that references a branch in master. -- link in Home page accessed from Wiki in header menu
- Create a Fork of the test repo. -- samvera-labs/branch-renaming-test-1
- Clone the test repo to your local machine.
- Clone the Fork to your local machine.
- Create a second repo with a pin in the Gemfile to a master sha in the repo having the branch renamed -- N/A The test app is not setup as a gem.
Tool: gitHub-default-branch
Reference:
- Renaming the default branch from master (official GitHub documentation)
Usage:
navigate to the test repo in github (e.g. YOUR_GITHUB_USERNAME/branch-renaming-test)
click branches link
- click pencil icon beside
master
branch - set name to
main
Checklist:
- renames master to main
- branch dropdown defaults to main
- master is not in the branch dropdown
- Settings → Branches
- main is the default branch
- branch rules were copied over to main
- master branch is not in the branch dropdown under Default branch
- master branch is not listed in the Branch protection rules area
- updates issues
- changes reference to a sha in master to the same sha in main
- changes links to code in master branch to the same code in main -- NO -- (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
main
.)
- updates PRs
- updates 'commit into' branch to main for all PRs
- updates links to code in master branch to the same code in main -- NO -- (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
main
.)
- documentation
- in wiki page, updates links to code in master branch to the same code in main -- NO -- (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
main
.) - in README, updates links to code in master branch to the same code in main -- NO -- (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
main
.)
- in wiki page, updates links to code in master branch to the same code in main -- NO -- (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
- local git repo
- commit/push without changing branch name locally automatically DOES NOT recreate the old branch name -- NO -- IT DOES recreate master
- commit/push without changing branch name locally automatically goes to new branch name -- NO -- IT GOES to master branch
- AND all links directed at master no longer autoforward to main; they go to master branch
- updates local master tracking origin/master to local main tracking origin/main -- NO -- nothing locally automatically updates
after following instructions for updating local git repo
git branch -m master main git fetch origin git branch -u origin/main main
- updates branches based on origin/master to origin/main
- updates branches based on local master to local main -- NOTE: The link to master is based on the sha and the sha doesn't change with the renaming, so this is a no-op.
- in second repo, updates pin to master sha in the repo having the branch renamed (NOT TESTED)
- working with Forks
after rename in parent, fork default branch is also renamed -- NO -- the default branch continues to be master, but there is a note telling you that the default branch was renamed to main in the source repo.
- PRs from fork into source repo are updated to merge into main branch
Rename non-master branch:
- renames rename_me branch to renamed branch
- branch dropdown lists renamed
- rename_me is not in the branch dropdown
- Settings → Branches
- does not change the default branch
- branch rules for rename_me were copied over to renamed
- rename_me branch is not in the branch dropdown under Default branch
- rename_me branch is not listed in the Branch protection rules area
- updates issues
- changes reference to a sha in rename_me to the same sha in renamed
- changes links to code in rename_me branch to the same code in renamed (NOTE: Even though the link text and URL were not changed, GitHub forwards to the renamed branch which is
renamed
.)
- updates PRs
- updates 'commit into' branch for PRs going to rename_me to renamed for all PRs
- updates 'from' branch for PRs going from rename_me to renamed for all PRs -- NO UPDATE and CLOSES the PRs
- updates links to code in rename_me branch to the same code in renamed (NOTE: Even though the link text and URL were not changed, GitHub forwards the renamed branch which is
renamed
.)
- wiki updated
- updates links to code in rename_me branch to the same code in renamed (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.)
- local git repo
- commit/push without changing branch name locally automatically DOES NOT recreate the old branch rename_me
- commit/push without changing branch name locally automatically goes to new branch renamed
- updates to local rename_me tracking origin/master to local renamed tracking origin/renamed
- updates branches based on origin/rename_me to origin/renamed
- updates branches based on local rename_me to local renamed
- in second repo, updates pin to rename_me sha in the repo having the branch renamed
- working with Forks
- TBD
Additional areas not tested
- automated builds and deployments that reference master branch
- building images that aren't from tags but from branches
- Jenkins
- Ansible
- other tooling that references master branch
- git aliases
- local shell scripts
- maintenance scripts for github API
- git reflow or other 3rd party tools
- Integrations
- Github hooks, coveralls, code climate, hound, circleci
- mirroring with other sources (e.g. gitlab mirroring github)
- notifications to tools (e.g. slack integration)
- documentation (eg. raw.github.com URLs)
- samvera.github.io
- samvera.org
- github pages for the project
- Contributing
- references to master in code
- Gemfile pins
- To possible JSON documents in Github repos
- forks
- Within "usual" contributors
- Other "users"
- In particular, Browse Everything has utility outside of Samvera's adopters
, multiple selections available,
Related content
Effectiveness of Tool: github-default-branch - Samvera Branch Renaming Working Group
Effectiveness of Tool: github-default-branch - Samvera Branch Renaming Working Group
More like this
Effectiveness of Tool: Branch Renaming Script - Samvera Branch Renaming Working Group
Effectiveness of Tool: Branch Renaming Script - Samvera Branch Renaming Working Group
More like this
Samvera Branch Renaming Working Group
Samvera Branch Renaming Working Group
More like this
New Repo with Main Branch - Samvera Branch Renaming Working Group
New Repo with Main Branch - Samvera Branch Renaming Working Group
More like this
Branch Renaming Implementation Plan
Branch Renaming Implementation Plan
More like this
Hiatus for Branch Renaming Working Group
Hiatus for Branch Renaming Working Group
More like this