Skip to content
main
Switch branches/tags
Code

Latest commit

* Change from "make -C doc man"

* Add support for GPG-signed commits (#46)

GPG-sign commits if option -S/--gpg-sign is given, or if configurations
revise.gpgSign or commit.gpgSign are set to true.

Unlike Git, we do not support passing the key ID as argument.  Git's
way of accepting this optional argument is a bit weird.  It would be
awkward to try to support the same with argparse.  So it's probably
best to use a separate argument for the key ID in future.

For now, the key ID is taken from Git configuration (user.signingKey)
or the committer signature as fallback.

A call of `git-revise COMMIT --gpg-sign` w/o any changes in the index
causes creation of GPG commit signatures for all commits since COMMIT.

Conversely, if GPG signing is disabled, git-revise will remove
the signature, even if the commits were not modified otherwise.
So adding/removing a signature is just another modification, like
rewording/rebasing. This logic is applied to all commits in the
todo-list.

The test is a bit large, but the pieces are mostly independen.  Maybe
we should share the GPG initialization somehow?

Closes #46
Closes #73

Co-authored-by: Johannes Altmanninger <aclopte@gmail.com>
Signed-off-by: Nicolas Schier <nicolas@fjasle.eu>

Co-authored-by: Nicolas Schier <nicolas@fjasle.eu>
Co-authored-by: Nika Layzell <nika@thelayzells.com>
06e9126

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

git revise

Build Status PyPi Documentation Status

git revise is a git subcommand to efficiently update, split, and rearrange commits. It is heavily inspired by git rebase, however it tries to be more efficient and ergonomic for patch-stack oriented workflows.

By default, git revise will apply staged changes to a target commit, then update HEAD to point at the revised history. It also supports splitting commits and rewording commit messages.

Unlike git rebase, git revise avoids modifying the working directory or the index state, performing all merges in-memory and only writing them when necessary. This allows it to be significantly faster on large codebases and avoids unnecessarily invalidating builds.

Install

$ pip install --user git-revise

Various people have also packaged git revise for platform-specific package managers (Thanks!)

macOS Homebrew

$ brew install git-revise

Fedora

$ dnf install git-revise

Documentation

Documentation, including usage and examples, is hosted on Read the Docs.

About

A handy tool for doing efficient in-memory commit rebases & fixups

Resources

License

Packages

No packages published