Make sure git commit messages are well-formed
Ruby
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
spec
.gitignore
.poper.sample.yml
.rubocop.yml
.travis.yml
Gemfile
LICENSE
README.md
Rakefile
poper.gemspec
poper.gif

README.md

Poper

Build Status +Coverage Status +Code Climate Gem Version Dependency Status

Poper makes sure that your git commit messages are well-formed. It's partly inspired by this article written by tpope. Rules specified there form the basis of Poper rules. But Poper doesn't stop there. It also doesn't like generic commit messages like 'oops, fix tests'. Poper was created to be used by Pronto, but will work perfectly well in whatever scenario you'll come up for it!

Usage

Poper demo

Install Poper like any other gem and then run it from your terminal, specifying a commit:

  gem install poper
  cd /repo/which/commits/you/want/to/check
  poper run HEAD~3

Every commit between current HEAD and specified commit will be checked.

Configuration

The behavior of Poper can be controlled via the .poper.yml configuration file. It must be placed in your project directory. A sample file, .poper.sample.yml, is included for easy setup.

The file has the following format:

disallow_single_word:
  enabled: true

character_limit:
  enabled: true
  number: 72

summary_character_limit:
  enabled: true
  number: 50

disallow_generic:
  enabled: true
  words:
    - fix
    - fixed
    - fixes
    - oops
    - todo
    - fixme
    - commit
    - changes
    - hm
    - hmm
    - hmmm
    - test
    - tests
    - quickfix

enforce_capitalized:
  enabled: true

All properties that can be specified via .poper.yml, can also be specified via environment variables. Their names will be the upcased path to the property. For example: POPER_ENFORCE_CAPITALIZED_ENABLED or POPER_DISALLOW_GENERIC_WORDS. (In the case of the latter, since environment variables don't support arrays, use a comma-separated list of words and poper will parse them appropriately.) Environment variables will always take precedence over values in configuration file.