Skip to main content

A tool for submitting and landing stacked diffs to GitHub

Project description

Fel

Fel is a tool for submitting stacked diffs to GitHub. Fel takes care of all the busy work of submitting multiple commits as a stack of PRs and lets you focus on keeping your diffs reviewable and lets reviewers focus on understanding your code. When your stack is ready to land, Fel handles merging all your PRs through GitHub, producing a commit history that looks like you rebased the whole stack at once, without polluting your history with extra merge commits, or requiring the upstream project to use an external tool to land diffs to master.

Demo

Fel Demo GIF

Fel even generates graphs for your PRs to indicate all of the diffs in your stack and how they relate.

This diff is part of a fel stack

* #75 Bugfixes in file 4
* #74 Added file4
| * #73 New line in third file
|/  
* #72 Third new file
* #71 Line 1 in new file
* master

Usage

Fel requires a GitHub oauth token to create and merge PRs on your behalf. Generate one here. Once you have your token, add it to the Fel configuration file (default ~/.fel.yml).

gh_token: <your_token_here>

Now create a new branch and start writing some diffs. Working with stacked diffs requires a different way of thinking, think of each commit as an atomic unit of change. Commit early into the development of each diff and amend often. Leave detailed commit bodies, they'll become the contents of your PRs when you submit your stack for review.

Once your stack is ready, run fel submit. Fel will generate a PR for each commit in the stack, basing the first PR against origin/master, and then each subsequent PR against the previous PR in the stack. If multiple stacks overlap, Fel will create a single PR for the common diffs, and base the diverging diffs on the common base.

When your diffs are reviewed and ready to land, checkout the top of your stack and run fel land. Fel will merge the PRs on GitHub in order by rebasing onto the base branch, without creating the ladder of merge commits associated with a manual stacked PR workflow. After your commits are landed, fel cleans up the branches it generated and leaves you on a fresh checkout of the upstream branch, with all of your diffs landed.

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

fel-0.4.0.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

fel-0.4.0-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

File details

Details for the file fel-0.4.0.tar.gz.

File metadata

  • Download URL: fel-0.4.0.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.5 Linux/5.8.0-1033-azure

File hashes

Hashes for fel-0.4.0.tar.gz
Algorithm Hash digest
SHA256 4a7f40a703f1481c669b615bf0739514e0110769fe2e9bc0744e2069ca1d91ed
MD5 4cb8d7fb96abeb08cba9d53898442e3a
BLAKE2b-256 f7430a2f76ea969964ff9f088aaa67e8921f730084ee0f791e82d5de2cc49375

See more details on using hashes here.

File details

Details for the file fel-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: fel-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 30.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.5 Linux/5.8.0-1033-azure

File hashes

Hashes for fel-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f21d46e9a20dc684703ff86ed0bd1e88ee90319a161e9fc114f7a58a01841ea
MD5 1c4c1f4beb52b4a5d7a4004d15e2445c
BLAKE2b-256 4179613d4301c2a6901217df34c4235de95deeeac3570b14bc1cf91b12c99635

See more details on using hashes here.

Supported by

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