From: Felipe Contreras Date: Fri, 31 May 2013 07:46:19 GMT Subject: [PATCH v9 3/4] contrib: related: add option to parse from committish Message-ID: <1369986380-412-4-git-send-email-felipe.contreras@gmail.com> In-Reply-To: <1369986380-412-1-git-send-email-felipe.contreras@gmail.com> For example master..feature-a. Signed-off-by: Felipe Contreras --- contrib/related/git-related | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/contrib/related/git-related b/contrib/related/git-related index 3379982..20eb456 100755 --- a/contrib/related/git-related +++ b/contrib/related/git-related @@ -1,10 +1,12 @@ #!/usr/bin/env ruby # This script finds people that might be interested in a patch -# usage: git related +# usage: git related $since = '5-years-ago' $min_percent = 10 +$files = [] +$rev_args = [] class Commit @@ -102,10 +104,42 @@ class Commits end end + def from_rev_args(args) + 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 /^@@ -(\d+)(?:,(\d+))?/ + get_blame(source, $1, $2, id) if source + 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) +if $files.empty? + commits.from_rev_args($rev_args) +else + commits.from_patches($files) +end commits.import count_per_person = Hash.new(0) -- 1.8.3.358.g5a91d05