Branchout / branchout

A manyrepo management tool to allow for local monorepo projecting while keeping everything in distinct repositories
Apache License 2.0
9 stars 2 forks source link
git manyrepo metarepo monorepo polyglot

branchout

A tool for managing organisations with many repositories in a structured way, commonly called a Projected Monorepo

Badges

Build Status

Structure

Project repositories are named group-project-name

When the projects are branched out locally they look like this

group one

group two

The reason is simple, it gives a consistent structure for developers

Getting Started

Brew

Brew is a handy tool for consistent tooling, it can be run on OSX and Linux

brew tap Branchout/homebrew-branchout
brew install branchout

Initialise an existing organisation

To start with an existing project just init it from the git url

branchout init https://github.com/Branchout/branchout-reactor.git
cd ~/project/branchout-reactor
branchout status
branchout pull

This will create the Branchoutfile and Branchoutprojects if needed

The default branchout name is the name of the root project

You can now add projects branchout add <project-name>

They will show as not cloned until you branchout pull

If you want to clone when you add branchout clone <project-name>

Need to trust a certificate or ca bundle

If you have a corporate CA bundle that you need to trust just add it at <metarepo>/.branchout/cacerts

branchout-yarn will configure the environment so that yarn can trust certificates in or signed by certificates in cacarts

Grokking the code and contributing

Tooling

Installing the required tools

brew install git bats-core shellcheck

Running the tests

The tests are written in bats https://github.com/bats-core/bats-core

Note, the sstephenson/bats repository is unmaintained, bats-core is what you want.

make test

PRs Welcome

Feel free to send some PRs in, with tests