/microplane

A CLI tool to make git changes across many repos, especially useful with Microservices.

Primary LanguageGoApache License 2.0Apache-2.0

microplane

A CLI tool to make git changes across many repos.

Learn more about microplane in this introductory blogpost.

microplane

"the lemon is Git{Hub,Lab}"

Setup

Here are several ways to install microplane:

  • Pre-built release - You can download a pre-built version of Microplane from the Github releases.
  • Compile it yourself - Run go install github.com/Clever/microplane@latest. In this case the binary will be installed to $GOPATH/bin/microplane. Alternately, you can follow the steps under "Development", below.
  • Homebrew - brew install microplane. The latest homebrew formula is here

Usage

GitHub setup

The GITHUB_API_TOKEN environment variable must be set for Github. This should be a GitHub Token with repo scope.

Optional: If you use self-hosted Github, you can specify its URL by passing --provider-url=<your URL> when running mp init. This URL should look like: https://[hostname]. Don't include path parameters like /api/v3 or /api/uploads.

Self-hosted Github setup with different URLs for the main API and uploads API are not yet supported. If this is a blocker for you, please file an issue or make a PR.

GitLab setup

The GITLAB_API_TOKEN environment variable must be set for Gitlab. This should be a GitLab access token

To use Gitlab, you must specifically pass --provider=gitlab when running mp init.

Optional: If you use a self-hosted Gitlab, you can specify its URL by passing --provider-url=<your URL> when running mp init.

Using Microplane

Microplane has an opinionated workflow for how you should manage git changes across many repos. To make a change, use the following series of commands.

  1. Init - target the repos you want to change
  2. Clone - clone the repos you just targeted
  3. Plan - run a script against each of the repos and preview the diff
  4. Push - commit, push, and open a Pull Request
  5. Merge - merge the PRs

For an in-depth example, check out the introductory blogpost.

Related projects

Development

See Development.md.