Skip to main content

No project description provided

Project description

Branchtree

branchtree is a command-line tool that displays a hierarchical representation of the branches in a Git repository. It visualizes the relationships between branches, showing which branches are based on others and how they are related through commits.

Alternatively it can also be imported and used as a Python module.

Features

  • Branch hierarchy: View a tree-like structure showing how branches are related to one another.
  • Filtering by regex: Filter branches by a regular expression to display only relevant branches.
  • Local and remote branches: Show either local or remote branches, or both.
  • Tag inclusion: Display whether a branch is merged into a given tag.
  • Branch-specific view: View a specific branch's hierarchy along with its children (if any).

Installation

To use the branchtree tool, ensure you have Python (>= 3.11) installed on your system.

You can install branchtree via pip:

$ pip install branchtree

Alternatively, you can install it by cloning this repository and installing via pip locally:

$ git clone https://github.com/nazsolti/branchtree.git
$ cd branchtree
$ pip install .

After installation the branchtree command will be available in your terminal.

Usage

usage: branchtree [-h] [--regex REGEX] [-l] [-r] [-b [BRANCH ...]] [-t TAG]

Options:

  • -h, --help: Show the help message and exit.
  • -V, --version: Show the version number and exit.
  • --regex REGEX: Only show branches matching the given regex.
  • -l, --local: Only show local branches.
  • -r, --remote: Only show remote branches from origin. For other remotes, use the --regex option.
  • -b [BRANCH ...], --branch [BRANCH ...]: Only show the specified branches and their children.
  • -c [CONTAINS ...], --contains [CONTAINS ...]: Only show branches which contain these revisions. This can be a branch, tag or any commit specifier. If there's more specified, show branches which contain all of them.
  • -N, --no-contains: This only has effect if --contains is specified, also show branches which do not contain the given revisions, and instead specify the branches which do contain them.
  • -t TAG, --tag TAG: Show whether each branch is included in the given tag (i.e., merged into the tag).

Examples

Displaying Remote Branches

$ branchtree -r

This command will display a tree of remote branches from origin.

🞄origin/feature-1234
  └── origin/bugfix-4567
🞄origin/bugfix-4567
🞄origin/feature-5678
🞄origin/release-2025-01
🞄origin/feature-6789
  └── origin/feature-1234
       └── origin/bugfix-4567
🞄origin/feature-7890
🞄origin/hotfix-3456

In this example, origin/feature-6789 is the parent branch of origin/feature-1234 and that is the parent of origin/bugfix-4567.

Filtering Branches with a Regex

$ branchtree -r --regex "feature"

This command will show only remote branches with names that match the regex pattern feature:

🞄origin/feature-1234
🞄origin/feature-5678
🞄origin/feature-6789
  └── origin/feature-1234
🞄origin/feature-7890

Show Only Local Branches

$ branchtree -l

This command will display the hierarchy of local branches in the repository.

🞄feature/login-setup
🞄feature/dashboard-UI
  └── feature/login-setup
🞄hotfix/ui-bug
🞄feature/profile-settings
  └── feature/dashboard-UI
       └── feature/login-setup

Show Only Specific Branches

$ branchtree -b feature/login-setup feature/dashboard-UI

This command will display the hierarchy for only the specified branches and their children.

🞄feature/login-setup
🞄feature/dashboard-UI
  └── feature/login-setup

Show Branches Merged Into a Tag

$ branchtree -r -t v1.2

This command will display all remote branches and indicate whether they are merged into the v1.2 tag.

🞄origin/feature-1234
  └── origin/bugfix-4567 (in v1.2)
🞄origin/bugfix-4567
🞄origin/feature-5678
🞄origin/release-2025-01
🞄origin/feature-6789
  └── origin/feature-1234
       └── origin/bugfix-4567 (in v1.2)
🞄origin/feature-7890
🞄origin/hotfix-3456 (in v1.2)

In this particular example branches origin/bugfix-4567 and origin/hotfix-3456 are merged into the v1.2 tag.

This can be useful to check whether a branch has been released already.

Show Branches Containing a Branch

$ branchtree -c feature/login-setup

This command will only display the hierarchy for the branches that contain the specified branch.

🞄feature/dashboard-UI
  └── feature/login-setup

Similarly to the -b argument, multiple branches can be specified.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

branchtree-0.1.6.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

branchtree-0.1.6-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file branchtree-0.1.6.tar.gz.

File metadata

  • Download URL: branchtree-0.1.6.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for branchtree-0.1.6.tar.gz
Algorithm Hash digest
SHA256 e77c966ccf5f6da4d7156339a22ecd29e9b1f3e2e657c4ee717085cb3b7a3a76
MD5 4d6afca14dfc4e22fd8bd63f337992a9
BLAKE2b-256 da49605d97a18bb67236f1a64c787fda02cabeb285ddc993e684f743ddfcca77

See more details on using hashes here.

File details

Details for the file branchtree-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: branchtree-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for branchtree-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 effa9c03a1978792e24e0d2734fd0ecb4e27e40d72556fc780ab07c5d4921af0
MD5 c2c5131ad7bf06b63dac42a218552a4b
BLAKE2b-256 dbaea7273cf8fce319d13193de784e5e165eb0927a1c4533438f899efcb889d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page