captain_hook

A ruby library for managing git hooks.

Usage

An example post-receive hook sending to campfire (tinder)

your_repo/.git/hooks/post-receive

require 'captain_hook'
require 'tinder'

hook = CaptainHook.from_path("../../")

hook.handle_post_receive do
  room = MyCampfire.my_room
  room.speak "New commit: '#{message}' by #{author} to #{ref_name}"
end

An example post-commit hook sending an email detailing the commit

your_repo/.git/hooks/post-commit

require 'captain_hook'
require 'mail'

hook = CaptainHook.from_path(File.join(File.dirname(__FILE__), '..','..'))
hook.handle_post_commit do
  mail =        Mail.new 
  mail.from     '[email protected]'
  mail.to       '[email protected]'
  mail.subject  "#{message} committed by #{author} to #{ref_name}"
  mail.body     diff

  mail.delivery_method(:sendmail)
  mail.deliver
end

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Adam Pearson. See LICENSE for details.