Re: [PATCH v2 5/8] contrib: cc-cmd: add option to parse from committish
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 19, 2013, 17:59 UTC
- Message-ID
- <7vtxn21jvt.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1366348458-7706-6-git-send-email-felipe.contreras@gmail.com>
Felipe Contreras <felipe.contreras@gmail.com> writes:
Show 38 quoted lines
> For example master..feature-a.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@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.
Show 30 quoted lines
> + 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