Skip to content

dp28/guard-git

Repository files navigation

Guard::Git

Stops Guard triggering plugins whenever you change branches.

Installation

Add this line to your application's Gemfile:

gem 'guard-git'

And then execute:

$ bundle

Or install it yourself as:

$ gem install guard-git

Usage

There are two ways to use this gem:

Make all watch calls git aware

This is the simplest way to get started and the default way to use this gem.

Add the following to the top of your Guardfile:

require `guard/git`

Guard::Git.enable!

All of the calls to watch will now only be triggered if the file changes on disk and one of the follwing is true:

  • The file has changed since HEAD
  • The file is untracked
  • The file is gitignored

Explicitly use the git matcher

If you only want to use git-aware matchers for a subset of watch calls or you'd prefer not to monkeypatch Guard, you can use the Guard::Git::ChangedFilesMatcher instead.

For example, if you had the follwing Guardfile:

guard :shell do
  watch(/.*/) do
    # do something
  end
end

you can make that single watch git-aware by changing the file to:

require `guard/git`

guard :shell do
  watch(Guard::Git::ChangedFilesMatcher.new(/.*/)) do
    # do something
  end
end

Development

After checking out the repo, run bin/setup to install dependencies.

You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

Testing

To properly end-to-end test this gem it's necessary to have a process running guard to verify which file changes cause plugins to be triggered. guard needs to run in a tty rather than a background process. Therefore, before running any specs, run bin/setup_integration_test in a terminal to create a test guard process.

Once you have the test guard process set up, run bundle exec rake spec to run all the tests once, or bin/guard to start a guard process that will run relevant tests and linting on any file change.

You may need to restart bin/setup_integration_test between some test runs during development as the test guard process only loads the gem at the start rather than before each test (it requires the files in the Guardfile).

Releasing new versions

To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dp28/guard-git.

License

The gem is available as open source under the terms of the MIT License.