reinstate-revert-revert

pre-commit plugin to improve default commit messages when reverting reverts


Keywords
precommit, pre-commit, revert
License
MPL-2.0
Install
pip install reinstate-revert-revert==1.0.3

Documentation

reinstate-revert-revert

A tool for cleaning up reverted-revert git commit messages.

Simple Case

It will turn

Revert "Revert "Experiment on the flux capacitor""

This reverts commit deadc0dedeadc0dedeadc0dedeadc0dedeadc0de.

into

Reinstate "Experiment on the flux capacitor"

This reverts commit deadc0dedeadc0dedeadc0dedeadc0dedeadc0de.
And reinstates commit 0d15ea5e0d15ea5e0d15ea5e0d15ea5e0d15ea5e.

Complex Case

If you have gotten yourself into a bind, it will also convert this:

Revert "Revert "Revert "Revert "Revert "Experiment on the flux capacitor"""""

into this, making it easier to follow the chain:

Revert "Experiment on the flux capacitor"

This reverts commit deadc0dedeadc0dedeadc0dedeadc0dedeadc0de.
And reinstates commit 0d15ea5e0d15ea5e0d15ea5e0d15ea5e0d15ea5e.
And reverts 1337beef1337beef1337beef1337beef1337beef.
And reinstates 1337f0011337f0011337f0011337f0011337f001.
And reverts 1337c0de1337c0de1337c0de1337c0de1337c0de.

Though once you’re using this as a pre-commit plugin, you should never get to this case in the first place.

Installation

As a git hook

The simplest way to use this package is as a plugin to pre-commit.

A sample configuration:

# Without default_stages, all hooks run in all stages, which means all your
# pre-commit hooks will run in prepare-commit-msg. That is almost certainly
# not what you want. This example will run for the default hooks installed.
# You might have to adjust it for your environment, if you have changed those
# defaults.
default_stages:
  - commit
repos:
  # […]
  - repo: https://github.com/erikogan/reinstate-revert-revert
    rev: v1.0.3
    hooks:
      - id: reinstate-revert-revert
        stages:
          - prepare-commit-msg

By default, pre-commit does not install a hook for the prepare-commit-msg stage. You probably need to add it for this to work:

pre-commit install -t pre-commit -t prepare-commit-msg

As a standalone script

pip install reinstate-revert-revert

See reinstate-revert-revert --help for a full set of options.

reinstate-revert-revert takes log message file names as positional arguments.