Re: [PATCH 0/25] detecting &&-chain breakage
From: Jeff King <hidden>
Date: 2016-06-15 23:04:15
On Sat, Mar 21, 2015 at 11:01:43AM -0700, Junio C Hamano wrote:
quoted
Running: git diff origin origin/jk/test-chain-lint | perl diff-blame.pl jk/test-chain-lint | grep EOF was fun. At least I am not the only one. :)The parameter to diff-blame.pl should be origin, instead of jk/test-chain-lint, I presume? You are grabbing the preimage line numbers and asking blame to find out who wrote them.
Yes, sorry, that was an error translating from what I actually ran in the shell into the email. It should be "origin". And if the script really wanted to be user-friendly, it should probably take two endpoints and just run the diff itself (when I started it, I assume that you could process any diff, but of course you must know the start point to get a reasonable blame).
quoted
Nor the worst in the "severe" category.I do not quite get what this means---the script does not seem to judge what is severe and what is not, so I presume that this is to be judged by whoever is reading the output from the above pipeline after replacing "grep EOF" with "less" or something?
That was the exercise I left to the reader. :) In this case, it is possible because I have already split the patches into "severe", "moderate", and "trivial" cases, so you can blame only the severe patch (using its parent as the start-point).
quoted
while (<STDIN>) { if (m{^--- .*?/(.*)}) {This may match a removal of a line that begins with "^-- something/" ;-)
True. I was trying to avoid being stateful in my diff parsing. I guess it would be enough to parse the hunk headers to know how many lines are in the hunk. Not worth it for this one-off, but a good thing if somebody wanted to pick this idea up for a "real" tool.
quoted
# XXX coalesce blocks of adjacent lines into ranges? system(qw(git --no-pager blame), @ARGV,You may want to pass an option to always show the filename here.
I left that to the user. I actually found "--line-porcelain" useful for gathering statistics (e.g., piped to "grep '^author ' | sort | uniq -c"). -Peff