Felipe Contreras felipe.contre...@gmail.com writes:
For example master..feature-a.
Signed-off-by: Felipe Contreras felipe.contre...@gmail.com
---
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 f13ed8f..462f22c 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
@@ -134,10 +136,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 --no-pager show -C --oneline] + [id]) do |p|
When you know you are sending its output to a pipe, does --no-pager matter,
or is there anything more subtle going on here?
An extra --no-pager does not hurt, but it just caught/distracted my
attention while reading this patch.
+ 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
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html