Effectiveness of Tool: GitHub native rename - Samvera Branch Renaming Working Group

 Table of Content

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: 

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.)
  • 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