GitHooks
This gem provides an interface to write useful git hooks in Ruby. Those hooks can be used when working in projects in any programming language.
Installation
Add this line to your application's Gemfile
:
gem 'git-hooks'
And then execute:
$ bundle
Or install it yourself as:
$ gem install git-hooks
Usage
Install git_hooks on your project.
$ cd /path/to/project
$ git_hooks install pre-commit [--force]
Create configuration file
Create a .git_hooks.yml
on project root.
$ cd /path/to/project
$ git_hooks init
By now you will find the following built-in hooks:
- Prevent commits on master branch.
- Prevent commits with rubocop offenses.
- Prevent commits with broken rspec tests.
- Prevent commits with debugger.
- Prevent commits with trailing white space.
Warning about Rubocop
pre-commit use_stash
option:
This feature is yet experimental. Be aware that in some odd circumstances you may encounter merge conflicts when applying the stash.
Ensure hooks existence
To ensure that hooks exists on .git/hooks
, include the following line on your
application's start-up code (e.g. config/environments/development.rb
or
config/environments/test.rb
for a rails app).
GitHooks.validate_hooks!
This will force git_hooks
installation before you can run your application. Be
sure not to call GitHooks#validate_hooks!
on production environments though!
Problems with ruby version
If you run git
under other systems such as gitk
or Emacs' Magit
, you may
encounter problems with the ruby version being used to run GitHooks
. This
happens because those applications don't source the ~/.bashrc
file, which is
required by ruby version managers such as Rbenv
and Rvm
.
In order to fix this problem, you can install the hooks by passing your ruby
path to the --ruby_path
option. For example:
$ git_hooks install pre-commit --ruby_path `which ruby`
You can also manually edit the .git/hooks/{hook-name}
file though.
Contributing
- Fork it ( https://github.com/stupied4ever/ruby-git-hooks/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request