Skip to main content

Brancher

Brancher is a tool inspired by git flow that is more flexible in how it handles branching. It allows any configuration of branches and simply makes it easier to see which commits are in what branch, as well as advancing changes between branches. A typical branch layout may be like this:

┌─────────────────┐   ┌─────────────────┐   ┌─────────────────┐   ┌─────────────────┐
│     develop     ├──▶│     staging     ├──▶│      beta       ├──▶│     master*     │
└─────────────────┘   └─────────────────┘   └─────────────────┘   └─────────────────┘

                                                                 *production branch

Note: Brancher can handle other configurations, assuming there's one final "production" branch and any number of sequential pre-production branches to the left of it.

Installation

pip3 install gitbrancher

Available Commands

Commands:

  • overview (o): Prints an overview of branches with outstanding commits
  • forward (f): Fast forwards commits into branch
  • backfix (b): Applies changes on more advanced branches to current one
  • compare (c): Shows commits in one branch but not another
  • init: Initialize repo

Add -h to any command for usage details.

Usage

Initialization

Let's start with an example of an empty repo.

First Commit

Next, initialize Brancher. Brancher will store your branching model in your repository's local configuration.

Brancher init

Advancing commits

Now let's start some development work.

Development work

That looks good, so we'll advance that commit to staging, the next branch after develop.

Advancing commits

While staging is having some Q/A work done, we'll continue development in develop:

More development work

Commit overview

With pending commits in develop and staging, let's get an overview of what commits exist where.

Overview

Backfilling hotfixes

With development work ongoing and Q/A happening on staging, let's make an urgent bugfix to production. As you can see, once that commit has been made, it only exists on the master branch, not other branches.

Hotfix to production

We want to bring that hotfix back into develop. After checking out develop, we'll apply the hotfix to develop too:

Backfix to staging

An overview confirms that the backfilled changes have been applied to develop, but not beta or staging:

Overview hotfix

We can remedy this by applying the hotfix to those environments, also:

Backfill beta

Backfill stagign

Metadata

Release files for gitbrancher 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitbrancher 1.2.1
File Size Uploaded Provenance Actions
gitbrancher-1.2.1.tar.gz 5.9 kB Without provenance Details for gitbrancher-1.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gitbrancher 1.2.1
File Interpreter ABI Platform Actions
gitbrancher-1.2.1-py3-none-any.whl Python 3 none any Details for gitbrancher-1.2.1-py3-none-any.whl

Total release size: 12.1 kB

Release files / gitbrancher-1.2.1.tar.gz

Download URL gitbrancher-1.2.1.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
85024b51020893c6116c834cd02b98a0d28dcc82ebb7a73ba0b9921f6156d96d
BLAKE2b-256 checksum
How to use checksums
8f86b642117ca6cc786243678d5e45f31d36705dda5a1b746375e4e151a97d34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.9.19 Linux/6.5.0-1023-azure

Release files / gitbrancher-1.2.1-py3-none-any.whl

Download URL gitbrancher-1.2.1-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f765cf0485cc9bb65cd95b929fbfabcc85d7de0900907dca88d99e7ee4fc3355
BLAKE2b-256 checksum
How to use checksums
20eab8ca65a798ea3c9f9af9e323cac37ed8c45e11724c59ec3d18e81b7a3dd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.9.19 Linux/6.5.0-1023-azure

Security for gitbrancher 1.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page