Skip to content
Sends HTML email commit messages splitting commits that were pushed in one step. Changes are highlighted per word.
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Git Commit Notifier

by Bodo Tasche (bodo ‘at’ wannawork ‘dot’ de), Csoma Zoltan (Primalgrasp) (zoltan ‘at’ primalgrasp ‘dot’ com)

Sends email commit messages splitting commits that were pushed in one step.
Email is delivered as text or HTML with changes refined per word. Emails
have a scanable subject containing the first sentence of the commit as well
as the author, project and branch name.

For example:

[rails][master] Fix Brasilia timezone. [#1180 state:resolved] 

A reply-to header is added containing the author of the commit. This makes
follow up really simple. If multiple commits are pushed at once, emails are
numbered in chronological order:

 [rails][master][000] Added deprecated warning messages to Float#months and Float#years deprications.
 [rails][master][001] Enhance testing for fractional days and weeks. Update changelog.

Example email:


  • Ruby
  • RubyGems
  • diff/lcs gem
  • SMTP server or sendmail compatible mailer
  • mocha, hpricot gems for testing

Installing and Configuring

Before installing the Git Commit Notification script, make sure the following
Git settings are configured correctly.

  • git config hooks.mailinglist (email address of the recipient, probably your mailing list address)
  • Optional: git config hooks.emailprefix (application name, used in email subject)

Install the gem:

sudo gem install git-commit-notifier

After you installed the gem, you need to configure your git repository. Add a file called
“post-receive” to the “hooks” directory of your git repository with this content:

git-commit-notifier path_to_config.yml

(Don’t forget to make that file executable.)

An example for the config file can be found in config/git-notifier-config.yml.sample.


MIT License, see the file LICENSE.

Something went wrong with that request. Please try again.