A tool to set all GitHub settings for multiple repos at once.

Clone this repo:
  1. a108d0f Bail out before api calls if repo not in orgs. (#8) by Joshua Carp · 5 days ago master
  2. 8b329ab Bump version to v0.6.0 by Jess Frazelle · 3 weeks ago v0.6.0
  3. e1e655b Bump version to v0.5.5 by Jess Frazelle · 3 weeks ago
  4. df21f54 fix by Jess Frazelle · 3 weeks ago
  5. 7809335 update merge by Jess Frazelle · 3 weeks ago

Travis CI GoDoc Github All Releases

Named after Pepper Potts. A tool to set all GitHub settings for multiple repos at once.

Actions include:

You can set which orgs to include and use --dry-run to see the changes before they are actually made. Your user is automatically added to the repositories it will consider.

Also see genuinetools/audit for checking what collaborators, hooks, deploy keys, and protected branched you have added on all your GitHub repositories.

Installation

Binaries

For installation instructions from binaries please visit the Releases Page.

Via Go

$ go get github.com/genuinetools/pepper

Usage

$ pepper -h
pepper -  A tool to set all GitHub settings for multiple repos at once.

Usage: pepper <command>

Flags:

  -d         enable debug logging (default: false)
  --dry-run  do not change settings just print the changes that would occur (default: false)
  --nouser   do not include your user (default: false)
  --orgs     organizations to include (default: [])
  --token    GitHub API token (or env var GITHUB_TOKEN) 
  --url      GitHub Enterprise URL (default: <none>)

Commands:

  collaborators  Add a collaborator to all the repositories.
  merge          Update all merge settings to allow specific types only.
  protect        Protect the master branch.
  version        Show the version information.

Protect

Protect all master branches.

$ pepper protect --dry-run --token 12345 --orgs jessconf --orgs maintainerati
[OK] jessconf/jessconf:master is already protected
[OK] genuinetools/.vim:master is already protected
[OK] genuinetools/anonymail:master is already protected
[OK] genuinetools/apk-file:master is already protected
[UPDATE] genuinetools/certok:master will be changed to protected
...
[OK] genuinetools/weather:master is already protected
[OK] genuinetools/ykpiv:master is already protected
[OK] maintainerati/wontfix-cabal-site:master is already protected

Collaborators

Add a collaborator to all the repositories.

$ pepper collaborators -h
Usage: pepper collaborators [OPTIONS] COLLABORATOR

Add a collaborator to all the repositories.

Flags:

  --admin    Team members can pull, push and administer this repository (default: false)
  -d         enable debug logging (default: false)
  --dry-run  do not change settings just print the changes that would occur (default: false)
  --nouser   do not include your user (default: false)
  --orgs     organizations to include (default: [])
  --pull     Team members can pull, but not push to or administer this repository (default: false)
  --push     Team members can pull and push, but not administer this repository (default: false)
  --token    GitHub API token (or env var GITHUB_TOKEN)
  --url      GitHub Enterprise URL (default: <none>)
$ pepper collaborators --dry-run --admin j3ssb0t
...t 
[UPDATE] jessfraz/blog will have j3ssb0t added as a collaborator (admin)
[UPDATE] jessfraz/bolt will have j3ssb0t added as a collaborator (admin)
[UPDATE] jessfraz/boulder will have j3ssb0t added as a collaborator (admin)
[UPDATE] jessfraz/buildkit will have j3ssb0t added as a collaborator (admin)
[UPDATE] jessfraz/cadvisor will have j3ssb0t added as a collaborator (admin)
...

Merge

Update all merge settings to allow specific types only.

$ pepper merge -h
Usage: pepper merge [OPTIONS]

Update all merge settings to allow specific types only.

Flags:

  -commits  Allow merge commits, add all commits from the head branch to the base branch with a merge commit (default: false)
  -d        enable debug logging (default: false)
  -dry-run  do not change settings just print the changes that would occur (default: false)
  -nouser   do not include your user (default: false)
  -orgs     organizations to include (default: [])
  -rebase   Allow rebase merging, add all commits from the head branch onto the base branch individually (default: false)
  -squash   Allow squash merging, combine all commits from the head branch into a single commit in the base branch (default: false)
  -token    GitHub API token (or env var GITHUB_TOKEN)
  -url      GitHub Enterprise URL (default: <none>)
$ pepper merge --dry-run --squash
UPDATE] jessfraz/.vim will be changed to squash
[OK] jessfraz/1up is already set to squash
[UPDATE] jessfraz/acs-engine will be changed to squash
[UPDATE] jessfraz/acs-ignite-demos will be changed to squash
[UPDATE] jessfraz/apparmor-docs will be changed to squash
[UPDATE] jessfraz/baselayout will be changed to squash
...