For example master..feature-a. Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- contrib/cc-cmd/git-cc-cmd | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/contrib/cc-cmd/git-cc-cmd b/contrib/cc-cmd/git-cc-cmd index c49225f..aecfa45 100755 --- a/contrib/cc-cmd/git-cc-cmd +++ b/contrib/cc-cmd/git-cc-cmd @@ -5,11 +5,13 @@ require 'optparse' $since = '3-years-ago' $min_percent = 5 $show_commits = false +$files = [] +$rev_args = [] begin OptionParser.new do |opts| opts.program_name = 'git cc-cmd' - opts.banner = 'usage: git cc-cmd [options] <files>' + opts.banner = 'usage: git cc-cmd [options] <files | rev-list options>' opts.on('-p', '--min-percent N', Integer, 'Minium percentage of role participation') do |v| $min_percent = v @@ -122,10 +124,40 @@ class Commits end end + def from_rev_args(args) + return if args.empty? + source = nil + File.popen(%w[git rev-list --reverse] + args) do |p| + p.each do |e| + id = e.chomp + @main_commits[id] = true + File.popen(%w[git show -C --oneline] + [id]) do |p| + p.each do |e| + case e + when /^---\s+(\S+)/ + source = $1 != '/dev/null' ? $1[2..-1] : nil + when /^@@\s-(\d+),(\d+)/ + get_blame(source, $1, $2, id) + end + end + end + end + end + end + +end + +ARGV.each do |e| + if File.exists?(e) + $files << e + else + $rev_args << e + end end commits = Commits.new -commits.from_patches(ARGV) +commits.from_patches($files) +commits.from_rev_args($rev_args) commits.import if $show_commits -- 1.8.2.1.790.g4588561 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html