Trace the history of an individual method in a git repository
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
samples/repository.git
spec
.gitignore
.travis.yml
Gemfile
LICENSE
README.md
Rakefile
method_log.gemspec

README.md

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.