octokit-plugin-rename-branch
v2.1.0
Published
Octokit plugin to rename a branch in a github repository, its settings, and its code.
Downloads
2
Readme
octokit-plugin-rename-branch
Octokit plugin to rename a branch in a github repository
Usage
Load octokit-plugin-rename-branch
and @octokit/core
(or core-compatible module) directly from cdn.pika.dev
<script type="module">
import { Octokit } from "https://cdn.pika.dev/@octokit/core";
import {
renameBranch,
composeRenameBranch,
} from "https://cdn.pika.dev/octokit-plugin-rename-branch";
</script>
Install with npm install @octokit/core octokit-plugin-rename-branch
. Optionally replace @octokit/core
with a core-compatible module
const { Octokit } = require("@octokit/core");
const {
renameBranch,
composeRenameBranch,
} = require("octokit-plugin-rename-branch");
const MyOctokit = Octokit.plugin(renameBranch);
const octokit = new MyOctokit({
// create token at https://github.com/settings/tokens/new
auth: "my-token-123",
});
octokit.renameBranch({
owner: "octocat",
repo: "hello-world",
current_name: "master",
name: "main",
});
You can use composeRenameBranch
directly, too.
composeRenameBranch(octokit, {
owner: "octocat",
repo: "hello-world",
current_name: "master",
name: "main",
});
How it works
- Creates a new reference using the
sha
of the last commit ofcurrent_branch
(POST /repos/:owner/:repo/git/refs
) - Updates the default branch of the repository (
PATCH /repos/:owner/:repo
) - Updates branch protection to the new branch name if applicable (GraphQL mutation
updateBranchProtectionRule
) - Look for open pull requests and update the base branch if it’s
current_branch
(PATCH /repos/:owner/:repo/pulls/:pull_number
) - Delete
current_branch
(DELETE /repos/:owner/:repo/git/refs/:ref
)
Motivation
This library is meant to simplify the process of renaming branch names of GitHub repositories.
By default, both Git and GitHub use master
for their main branch. I think Git & GitHub should follow the lead of tech communities such as Django, Drupal and CouchDB and replace master
with non-offensive term, such as latest
or main
.