jolly_brancher
A sweet branch creation suite
Description
The overarching goal here is to facilitate developer time and remove duplicative work.
As a developer, I am more productive (and more descriptive) when I only have to write the description for what I’m working one one time (or barring that, as few times as possible).
In order to streamline and facilitate the developer’s workflow this tool aims to connect an arbitrary ticketing system (currently only JIRA is supported) to a git forge (currently only GitHub is supported).
Usage
Jolly brancher will, given a repository location create branches from JIRA tickets that automatically include ticket information in the branch, and branch name.
Given the repository base directory, you are provided with a list of repositories that you can act on (with tab completion):
After choosing a repository, you can either create a branch based on the contents of a ticket
Alternatively, if the branch name is well formed, you can create a PR against the parent of the branch, the tool will ask some questions and construct the body of the PR (it scans the CODEOWNERS file and suggests those users as tags), and create it:
If you decline to do so, then you will be redirected to the branch creation flow:
It will further create a pull review from an existing branch that is well formed:
It automatically populates the PR description with information from the ticket
Configuration
Global
JIRA and git credentials are required in ~/.config/jolly_brancher.ini it contains all the global settings.
Example:
[jira]
branch_format = {issue_type}/{ticket}-{summary}
[git]
pat = <REDACTED>
Repo
JIRA and git credentials are required in .jolly.ini in the root of the repo and overrides any global settings.
[jira] base_url = https://<subdomain>.atlassian.net token = <basic_auth_token> [git] pat = <personal_access_token> forge_root = https://github.com/<organization_name>/
Porcelain
This project started as a python utility, but over time I have found it to be more helpful as an emacs mode, so it’s now a half lisp, half python monstrosity that is tailored exactly to my needs.
Emacs Integration
Jolly Brancher now includes a comprehensive Emacs porcelain that keeps you sane by allowing you to interact with Jira tickets directly from Emacs - no more context switching to the Jira web interface!
The Emacs porcelain provides a rich set of features:
List and filter tickets (my tickets, unassigned, next-up, all tickets)
Search tickets with JQL queries
Start work on tickets (creates branches automatically)
End work and create PRs
Change ticket status and type directly from Emacs
Create new tickets
View tickets in browser when needed
Syntax highlighting for ticket information
Key bindings are available through the C-c j prefix or through the interactive menu (C-c j j).
Deploy
Manually bump version in setup.py
make deploy
Metadata
Release files for jolly-brancher 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jolly_brancher-1.1.1.tar.gz | 92.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jolly_brancher-1.1.1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 127.8 kB
Release files / jolly_brancher-1.1.1.tar.gz
| Download URL | jolly_brancher-1.1.1.tar.gz |
|---|---|
| Size | 92.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bd79d6a0152412b502e57371012835c24487efe8bc1d90badd95c897fa61cf41
|
|
BLAKE2b-256 checksum How to use checksums |
326eb6a85f955224488a37ecc2cd7df71a2390904f7f5f179b692acae83848f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Release files / jolly_brancher-1.1.1-py2.py3-none-any.whl
| Download URL | jolly_brancher-1.1.1-py2.py3-none-any.whl |
|---|---|
| Size | 34.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
129ff56241d92ec3b823139a1441cbf879c6476599a7bed60d4479b9416392f9
|
|
BLAKE2b-256 checksum How to use checksums |
506ff4fc28c2e85f54273c275dcbb34cf6016386ce7f5ca2adaeebd2fbebc7ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|