A Project to give the churn file, class, and method for a project for a given checkin Over time the tool adds up the history of chruns to give the number of times a file, class, or method is changing during the life of a project. Churn for files is immediate, but classes and methods requires buildings up a history using churn between revisions. The history is stored in ./tmp
Currently has Full Git and Mercurial (hg) support, and partial SVN support (supports only file level churn currnetly)
Authors:
-
danmayer
-
ajwalters
-
cldwalker
********************************************************************** * Revision Changes ********************************************************************** Files: +-------------------------------+ | file | +-------------------------------+ | Rakefile | | lib/churn/churn_calculator.rb | +-------------------------------+ Classes: +-------------------------------+-----------------+ | file | klass | +-------------------------------+-----------------+ | lib/churn/churn_calculator.rb | ChurnCalculator | +-------------------------------+-----------------+ Methods: +-------------------------------+-----------------+-------------------------------+ | file | klass | method | +-------------------------------+-----------------+-------------------------------+ | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#display_array | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s | +-------------------------------+-----------------+-------------------------------+ ********************************************************************** * Project Churn ********************************************************************** Files: +------------------------------------+---------------+ | file_path | times_changed | +------------------------------------+---------------+ | lib/churn/churn_calculator.rb | 14 | | README.rdoc | 7 | | lib/tasks/churn_tasks.rb | 6 | | Rakefile | 6 | | lib/churn/git_analyzer.rb | 4 | | VERSION | 4 | | test/test_helper.rb | 4 | | test/unit/churn_calculator_test.rb | 3 | | test/churn_test.rb | 3 | +------------------------------------+---------------+ Classes: +-------------------------------+-----------------+---------------+ | file | klass | times_changed | +-------------------------------+-----------------+---------------+ | lib/churn/churn_calculator.rb | ChurnCalculator | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | 1 | +-------------------------------+-----------------+---------------+ Methods: +-------------------------------+-----------------+-----------------------------------------+---------------+ | file | klass | method | times_changed | +-------------------------------+-----------------+-----------------------------------------+---------------+ | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#display_array | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#calculate_revision_data | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#initialize | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#filters | 1 | | lib/churn/churn_calculator.rb | ChurnCalculator | ChurnCalculator#to_s | 1 | +-------------------------------+-----------------+-----------------------------------------+---------------+
TODO:
-
SVN only supports file, add full SVN support
-
support bazaar, cvs, and darcs
-
make storage directory configurable instead of using tmp
-
allow passing in directories to churn, directories to ignore
-
add a filter that allows for other files besides. *.rb
-
ignore files pattern, so you can ignore things like vendor/, lib/, or docs/
-
finish adding better documenation using YARD
-
better man page formatting from README (switch to markdown?)
-
rake task for building manpage (currently manually run ronn -b1 README.rdoc)
Executable Usage:
-
‘gem install churn’
-
go to project root run ‘churn’
Rake Usage:
-
‘gem install churn’
-
on any project you want to use churn, add “require ‘churn’” to your rake file
-
run ‘rake churn’ to view the current output, file churn history is immediate, class and method churn builds up a history as it is run on each revision
-
temporary files with class / method churn history are stored in /tmp, to clear churn history delete them
-
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 Dan Mayer. See LICENSE for details.