Method Log

Trace the history of an individual method in a git repository (experimental).

Requirements

  • Ruby >= v1.9.3 (due to requirements of the rugged gem)
  • The rugged Ruby gem (listed as dependency in gemspec)
  • The libgit2 C library (included as part of rugged gem)
  • The parser Ruby gem (listed as dependency in gemspec)

Install

gem install method_log

Run

$ method_log <options> <method-signature>

# options:
--patch, -p:                                  Generate patch.
--ruby-version, -r <s>:                       Parser Ruby version (18, 19, 20, 21) (default: current)
--max-count, -n <i>:                          Limit the number of commits to output.
--stop-at-latest-introduction-of-method, -s:  Stop at lastest introduction of method.
--help, -h:                                   Show usage.

# method-signature
Uses the Ruby Index format e.g. Foo#bar, Bar::Baz#foo, Baz.foo.

Todo

  • Support for Rspec tests
  • Default to looking for commits in current git branch
  • Check what happens with merge commits
  • Maybe add as new git command or extension to existing command e.g. git log
  • Find "similar" method implementations e.g. by comparing ASTs of implementations

Credits

Written by James Mead and the other members of Go Free Range.

Thanks to Michael Feathers for some ideas in delta-flora.

Thanks to TICOSA for giving me the impetus to do something about an idea I'd been kicking around for a while.

License

Released under the MIT License.