Effectiveness of Tool: github-default-branch - Samvera Branch Renaming Working Group

 Table of Content

Setup

  • Create a test repo with a master branch, issues, PRs - See samvera-labs/branch-renaming-wg for a script to do this.
  • Within the test repo, create a wiki page that references a branch in master.
  • Within the test repo, add branch settings under Settings → Branches
  • Create a Fork of the test repo.
  • 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

Tool: gitHub-default-branch

Reference: 

Usage:

  • install with 

    npm install -g github-default-branch
  • run with

    github-default-branch --pat <github_access_token> --repo <github_username>/branch-renaming-test
  • Once complete, all local clones will need to run the following to update their master branch to be connected to origin/main

    From the directory for the local clone…

    git checkout master
    git pull
    git branch -m main

    NOTE: git fetch is not sufficient.  You need to use git pull for this to work.

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 (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.)
  • updates PRs
    • updates 'commit into' branch to main for all PRs (NOTE:
    • updates links to code in master branch to the same code in main (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.)
  • wiki updated
    • updates links to code in master branch to the same code in main (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
    • updates to local master tracking origin/master to local main tracking origin/main
    • updates branches based on origin/master to origin/main
    • updates branches based on local master to local main
    • in second repo, updates pin to master 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)
    • wikis
    • READMEs
    • 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

Case Study: samvera-circleci-orb:

https://github.com/samvera-labs/samvera-circleci-orb/issues/45

Ran:

github-default-branch --repo samvera-labs/samvera-circleci-orb --pat <token> --verbose --dry-run
github-default-branch --repo samvera-labs/samvera-circleci-orb --pat <token> --verbose

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 (N/A)
    • changes links to code in master branch to the same code in main (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.) (See https://github.com/samvera-labs/samvera-circleci-orb/issues/29)
  • updates PRs
    • updates 'commit into' branch to main for all PRs (NOTE:
    • updates links to code in master branch to the same code in main (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.) (N/A)
  • wiki updated
    • updates links to code in master branch to the same code in main (NOTE: Even though the link text and URL were not changed, GitHub forwards all 404 to the default branch which is main.) (N/A)
  • local git repo (None as expected)
    • updates to local master tracking origin/master to local main tracking origin/main
    • updates branches based on origin/master to origin/main
    • updates branches based on local master to local main
    • in second repo, updates pin to master sha in the repo having the branch renamed
  • working with Forks
    • TBD (One exists but no noticeable changes as expected)
  • README and other documents (Untested - Already done in https://github.com/samvera-labs/samvera-circleci-orb/commit/dda15dde353dc8303382507ab5601757bd3651b8)
  • Integrations:
    • CircleCI (Ran fine after rebasing a PR)

Locations text "master" still exists (mostly found via github search):

  • Comments on PRs about repointing to main from tool running
  • Links to code outside this repository
  • Issues and PRs related to the renaming
  • Closed PRs (not in github search)