Git Pre-Commit
Rake-Commit is a great tool for helping make sure our check-ins don’t break the build. However, in Git we don’t need all that stuff. Running our tests before check-in is easy with a Git pre-commit hook.
This Rails plug-in ensures that such a hook is installed on the developer’s repository. If no such hook is installed, one will be installed that calls ‘rake precommit
`
Installation
As a Rails Plugin
This plugin can be installed as a gem via config.gem or the gem bundler. Require the library as ‘git_precommit’.
To install as a non-gem plugin use one of the following commands from the root of your Rails project:
script/plugin install git://github.com/tobytripp/git-pre-commit
git clone git://github.com/tobytripp/git-pre-commit.git vendor/plugins/git_pre_commit
git submodule add git://github.com/tobytripp/git-pre-commit.git vendor/plugins/git_pre_commit
One installed, add the following to your project’s Rakefile:
require 'git-precommit/tasks'
Note: the above require will define the git hook tasks only in the ‘development’ and ‘test’ rails environments.
In a Stand-Alone Ruby Program
Add the following code to your project’s Rakefile:
require "git_precommit"
GitPrecommit::PrecommitTasks.new
task :default => ".git/hooks/pre-commit"
task :precommit => :default
CruiseControl.rb Integration
git-precommit can be configured to automatically push to your remote repository on successful checkin by installing the post-commit hook:
rake git:postcommit
However, if you’re running a continuous integration build, you shouldn’t push onto a broken build (unless you’re pushing the fix).
To check the status of a cruisecontrol.rb build before pushing, install the cruisestatus gem and record the url of your build server in a file called CRUISE_URL:
sudo gem install cruisestatus
echo http://my.cruiseserver.rb >> CRUISE_URL
Once you’ve done that, if your build has failed, you’ll be prompted before your changes will be pushed.