threads / rfc / 44886

[RFC for GIT] pull-request: add praise to people doing QA

Subject: [RFC for GIT] pull-request: add praise to people doing QA

## tl;dr

10 messages between Jan 15, 2017 and Jan 20, 2017.

replies: 9people: 5as markdown or json

Wolfram Sang· Jan 15, 2017, 18:30 UTC · lore
Asking for opinions on lkml and git...

Getting enough quality assurance is likely one of the bigger upcoming tasks in the near future. To improve the situation, praise the people already doing that by adding their names to pull requests in the same manner that patch authors are credited. Here is an example, I sent out today [1]:

=== old stuff
The following changes since commit a121103c922847ba5010819a3f250f1f7fc84ab8:
...
Vlad Tsyrklevich (1):
      i2c: fix kernel memory disclosure in dev interface
=== new stuff starts here
with much appreciated quality assurance from
----------------------------------------------------------------
Andy Shevchenko (1):
      (Rev.) i2c: piix4: Avoid race conditions with IMC
Benjamin Tissoires (1):
      (Test) i2c: do not enable fall back to Host Notify by default
Vladimir Zapolskiy (1):
      (Rev.) i2c: print correct device invalid address
=== diffstat, ...

This patch is a very early RFC to collect opinions. I am not very familiar with the git codebase, but I guess using a filter needs to be reworked, the dependency on GNU awk may be frowned upon (though 'asorti' is really useful here), the reg-ex are not super-solid, and it should be a command-line option, of course. That all being said, it was a fast way to produce what I would like to add to my pull requests for the i2c subsystem and to see if other kernel/git maintainers are interested in something like this.

Disclaimer: while this patch applies to the git codebase, I have to admit that
I simply patched around in /usr/lib/git-core of my Debian machine :)
So much for now, let me know what you think,
   Wolfram
[1] http://lkml.org/lkml/2017/1/15/55
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 git-praise-qa.awk   |   33 +++++++++++++++++++++++++++++++++
 git-request-pull.sh |    1 +
 2 files changed, 34 insertions(+)
Index: git-2.11.0/git-request-pull.sh
===================================================================
--- git-2.11.0.orig/git-request-pull.sh
+++ git-2.11.0/git-request-pull.sh
@@ -155,6 +155,7 @@ then
 fi &&
 
 git shortlog ^$baserev $headrev &&
+git log --no-merges ^$baserev $headrev | git-praise-qa.awk &&
 git diff -M --stat --summary $patch $merge_base..$headrev || status=1
 
 exit $status
Index: git-2.11.0/git-praise-qa.awk
===================================================================
--- /dev/null
+++ git-2.11.0/git-praise-qa.awk
@@ -0,0 +1,33 @@
+#! /usr/bin/gawk -f
+
+# New commit found, empty subject variable
+/^commit / { subject = "" }
+
+# Grab the subject line
+!subject && /^    / { subject = substr($0, 5); }
+
+# Scan for tags and get the type
+/^    Reviewed-by:/ { type = "Rev." }
+/^    Tested-by:/ { type = "Test" }
+
+type && subject {
+	# Extract the name
+	sub(/^.*: /, ""); sub(/ <.*/, ""); name = $0;
+	# Collect tags given by 'name'
+	tags[name] = tags[name] "      (" type ") " subject "\n";
+	count[name]++;
+	# Done, clear flag
+	type = "";
+}
+
+END {
+	print "\nwith much appreciated quality assurance from"
+	print "----------------------------------------------------------------"
+	# Sort by names
+	asorti(tags, sorted_names);
+	# printout in git style
+	for (i in sorted_names) {
+		name = sorted_names[i];
+		print name " (" count[name] "):" "\n" tags[name];
+	}
+}
Junio C Hamano· Jan 16, 2017, 00:35 UTC · re: Wolfram Sang · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

Wolfram Sang <wsa@the-dreams.de> writes:
Show 27 quoted lines
> === new stuff starts here
>
> with much appreciated quality assurance from
> ----------------------------------------------------------------
> Andy Shevchenko (1):
>       (Rev.) i2c: piix4: Avoid race conditions with IMC
>
> Benjamin Tissoires (1):
>       (Test) i2c: do not enable fall back to Host Notify by default
>
> Vladimir Zapolskiy (1):
>       (Rev.) i2c: print correct device invalid address
>
> === diffstat, ...
>
> This patch is a very early RFC to collect opinions. I am not very familiar with
> the git codebase, but I guess using a filter needs to be reworked, the
> dependency on GNU awk may be frowned upon (though 'asorti' is really useful
> here), the reg-ex are not super-solid, and it should be a command-line option,
> of course. That all being said, it was a fast way to produce what I would like
> to add to my pull requests for the i2c subsystem and to see if other kernel/git
> maintainers are interested in something like this.
>
> Disclaimer: while this patch applies to the git codebase, I have to admit that
> I simply patched around in /usr/lib/git-core of my Debian machine :)
>
> So much for now, let me know what you think,
So the idea is to have list of those whose names appear on
Reviewed-by: and Tested-by: collected and listed after the list of
commit titles and author names.  I personally do not see much
downsides in doing so, but I do not consume that many PRs myself, so
let's hear from those who actually do process many of them.

As to the implementation, I am wondering if we can make this somehow work well with the "trailers" code we already have, instead of inventing yet another parser of trailers.

In its current shape, "interpret-trailers" focuses on "editing" an existing commit log message to tweak the trailer lines. That mode of operation would help amending and rebasing, and to do that it needs to parse the commit log message, identify trailer blocks, parse out each trailer lines, etc.

There is no fundamental reason why its output must be an edited original commit log message---it should be usable as a filter that picks trailer lines of the selected trailer type, like "Tested-By", etc.

Jacob Keller· Jan 16, 2017, 04:05 UTC · re: Junio C Hamano · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

On Sun, Jan 15, 2017 at 4:35 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> As to the implementation, I am wondering if we can make this somehow
> work well with the "trailers" code we already have, instead of
> inventing yet another parser of trailers.
>
> In its current shape, "interpret-trailers" focuses on "editing" an
> existing commit log message to tweak the trailer lines.  That mode
> of operation would help amending and rebasing, and to do that it
> needs to parse the commit log message, identify trailer blocks,
> parse out each trailer lines, etc.
>
> There is no fundamental reason why its output must be an edited
> original commit log message---it should be usable as a filter that
> picks trailer lines of the selected trailer type, like "Tested-By",
> etc.

I have been looking at ways to use the interpret-trailers as a way to filter commits and print out trailers, and this sort of feature would be useful to me if it were generic. (and then pull-request could use the generic interface to grab the data and then parse it into a praise format)

Thanks, Jake

Wolfram Sang· Jan 19, 2017, 20:43 UTC · re: Junio C Hamano · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

Show 5 quoted lines
> So the idea is to have list of those whose names appear on
> Reviewed-by: and Tested-by: collected and listed after the list of
> commit titles and author names.  I personally do not see much
> downsides in doing so, but I do not consume that many PRs myself, so
> let's hear from those who actually do process many of them.

Sadly, no further responses so far. Let's see if they will come if I keep posting my pull requests with that information attached.

Show 14 quoted lines
> As to the implementation, I am wondering if we can make this somehow
> work well with the "trailers" code we already have, instead of
> inventing yet another parser of trailers.  
> 
> In its current shape, "interpret-trailers" focuses on "editing" an
> existing commit log message to tweak the trailer lines.  That mode
> of operation would help amending and rebasing, and to do that it
> needs to parse the commit log message, identify trailer blocks,
> parse out each trailer lines, etc.  
> 
> There is no fundamental reason why its output must be an edited
> original commit log message---it should be usable as a filter that
> picks trailer lines of the selected trailer type, like "Tested-By",
> etc.

I didn't know about trailers before. As I undestand it, I could use "Tested-by" as the key, and the commit subject as the value. This list then could be parsed and brought into proper output shape. It would simplify the subject parsing, but most things my AWK script currently does would still need to stay or to be reimplemented (extracting names from tags, creating arrays of tags given by $name). Am I correct?

All under the assumption that trailers work on a range of commits. I have to admit that adding this to git is beyond my scope.

Thanks for looking into it,
   Wolfram
Junio C Hamano· Jan 19, 2017, 21:22 UTC · re: Wolfram Sang · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

Wolfram Sang <wsa@the-dreams.de> writes:
Show 6 quoted lines
> I didn't know about trailers before. As I undestand it, I could use
> "Tested-by" as the key, and the commit subject as the value. This list
> then could be parsed and brought into proper output shape. It would
> simplify the subject parsing, but most things my AWK script currently
> does would still need to stay or to be reimplemented (extracting names
> from tags, creating arrays of tags given by $name). Am I correct?

That is not exactly what I had in mind. I was wondering if we can do without any external script, implementing the logic you added inside shortlog with an extra option that triggers the whole thing, which may call into the same trailers API as used by the interpret-trailers command to do the parsing and picking out parts.

Jeff King· Jan 19, 2017, 21:20 UTC · re: Wolfram Sang · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

On Thu, Jan 19, 2017 at 09:43:45PM +0100, Wolfram Sang wrote:
Show 24 quoted lines
> > As to the implementation, I am wondering if we can make this somehow
> > work well with the "trailers" code we already have, instead of
> > inventing yet another parser of trailers.  
> > 
> > In its current shape, "interpret-trailers" focuses on "editing" an
> > existing commit log message to tweak the trailer lines.  That mode
> > of operation would help amending and rebasing, and to do that it
> > needs to parse the commit log message, identify trailer blocks,
> > parse out each trailer lines, etc.  
> > 
> > There is no fundamental reason why its output must be an edited
> > original commit log message---it should be usable as a filter that
> > picks trailer lines of the selected trailer type, like "Tested-By",
> > etc.
> 
> I didn't know about trailers before. As I undestand it, I could use
> "Tested-by" as the key, and the commit subject as the value. This list
> then could be parsed and brought into proper output shape. It would
> simplify the subject parsing, but most things my AWK script currently
> does would still need to stay or to be reimplemented (extracting names
> from tags, creating arrays of tags given by $name). Am I correct?
> 
> All under the assumption that trailers work on a range of commits. I
> have to admit that adding this to git is beyond my scope.

This sounds a lot like the shortlog-trailers work I did about a year ago:

  http://public-inbox.org/git/20151229073832.GN8842@sigill.intra.peff.net/
  http://public-inbox.org/git/20151229075013.GA9191@sigill.intra.peff.net/
Nobody seemed to really find it useful, so I didn't pursue it.

Some of the preparatory patches in that series bit-rotted in the meantime, but you can play with a version based on v2.7.0 by fetching the "shortlog-trailers-historical" branch from https://github.com/peff/git.git.

And then things like:
  git shortlog --ident=tested-by --format='...tested a patch by %an'

work (and you can put whatever commit items you want into the --format, including just dumping the hash if you want to do more analysis).

-Peff
Wolfram Sang· Jan 19, 2017, 22:02 UTC · re: Junio C Hamano · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

Show 12 quoted lines
> > I didn't know about trailers before. As I undestand it, I could use
> > "Tested-by" as the key, and the commit subject as the value. This list
> > then could be parsed and brought into proper output shape. It would
> > simplify the subject parsing, but most things my AWK script currently
> > does would still need to stay or to be reimplemented (extracting names
> > from tags, creating arrays of tags given by $name). Am I correct?
> 
> That is not exactly what I had in mind.  I was wondering if we can
> do without any external script, implementing the logic you added
> inside shortlog with an extra option that triggers the whole thing,
> which may call into the same trailers API as used by the
> interpret-trailers command to do the parsing and picking out parts.

Sorry for being unclear. That's what I meant with "or to be reimplemented". I should have added "in C".

I am afraid this also requires more time than I am willing to spend on this issue. Seems my hack is going to stay for a while here.

However, thank you for your time and assisting me with pointers!
Jacob Keller· Jan 19, 2017, 23:42 UTC · re: Jeff King · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

On Thu, Jan 19, 2017 at 1:20 PM, Jeff King <peff@peff.net> wrote:
Show 49 quoted lines
> On Thu, Jan 19, 2017 at 09:43:45PM +0100, Wolfram Sang wrote:
>
>> > As to the implementation, I am wondering if we can make this somehow
>> > work well with the "trailers" code we already have, instead of
>> > inventing yet another parser of trailers.
>> >
>> > In its current shape, "interpret-trailers" focuses on "editing" an
>> > existing commit log message to tweak the trailer lines.  That mode
>> > of operation would help amending and rebasing, and to do that it
>> > needs to parse the commit log message, identify trailer blocks,
>> > parse out each trailer lines, etc.
>> >
>> > There is no fundamental reason why its output must be an edited
>> > original commit log message---it should be usable as a filter that
>> > picks trailer lines of the selected trailer type, like "Tested-By",
>> > etc.
>>
>> I didn't know about trailers before. As I undestand it, I could use
>> "Tested-by" as the key, and the commit subject as the value. This list
>> then could be parsed and brought into proper output shape. It would
>> simplify the subject parsing, but most things my AWK script currently
>> does would still need to stay or to be reimplemented (extracting names
>> from tags, creating arrays of tags given by $name). Am I correct?
>>
>> All under the assumption that trailers work on a range of commits. I
>> have to admit that adding this to git is beyond my scope.
>
> This sounds a lot like the shortlog-trailers work I did about a year
> ago:
>
>   http://public-inbox.org/git/20151229073832.GN8842@sigill.intra.peff.net/
>
>   http://public-inbox.org/git/20151229075013.GA9191@sigill.intra.peff.net/
>
> Nobody seemed to really find it useful, so I didn't pursue it.
>
> Some of the preparatory patches in that series bit-rotted in the
> meantime, but you can play with a version based on v2.7.0 by fetching
> the "shortlog-trailers-historical" branch from
> https://github.com/peff/git.git.
>
> And then things like:
>
>   git shortlog --ident=tested-by --format='...tested a patch by %an'
>
> work (and you can put whatever commit items you want into the --format,
> including just dumping the hash if you want to do more analysis).
>
> -Peff

This sounds interesting to me! When I have some more time to take a look at this i might see if I can revive it.

Thanks, Jake

Joe Perches· Jan 20, 2017, 00:06 UTC · re: Jacob Keller · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

On Thu, 2017-01-19 at 15:42 -0800, Jacob Keller wrote:
Show 53 quoted lines
> On Thu, Jan 19, 2017 at 1:20 PM, Jeff King <peff@peff.net> wrote:
> > On Thu, Jan 19, 2017 at 09:43:45PM +0100, Wolfram Sang wrote:
> > 
> > > > As to the implementation, I am wondering if we can make this somehow
> > > > work well with the "trailers" code we already have, instead of
> > > > inventing yet another parser of trailers.
> > > > 
> > > > In its current shape, "interpret-trailers" focuses on "editing" an
> > > > existing commit log message to tweak the trailer lines.  That mode
> > > > of operation would help amending and rebasing, and to do that it
> > > > needs to parse the commit log message, identify trailer blocks,
> > > > parse out each trailer lines, etc.
> > > > 
> > > > There is no fundamental reason why its output must be an edited
> > > > original commit log message---it should be usable as a filter that
> > > > picks trailer lines of the selected trailer type, like "Tested-By",
> > > > etc.
> > > 
> > > I didn't know about trailers before. As I undestand it, I could use
> > > "Tested-by" as the key, and the commit subject as the value. This list
> > > then could be parsed and brought into proper output shape. It would
> > > simplify the subject parsing, but most things my AWK script currently
> > > does would still need to stay or to be reimplemented (extracting names
> > > from tags, creating arrays of tags given by $name). Am I correct?
> > > 
> > > All under the assumption that trailers work on a range of commits. I
> > > have to admit that adding this to git is beyond my scope.
> > 
> > This sounds a lot like the shortlog-trailers work I did about a year
> > ago:
> > 
> >   http://public-inbox.org/git/20151229073832.GN8842@sigill.intra.peff.net/
> > 
> >   http://public-inbox.org/git/20151229075013.GA9191@sigill.intra.peff.net/
> > 
> > Nobody seemed to really find it useful, so I didn't pursue it.
> > 
> > Some of the preparatory patches in that series bit-rotted in the
> > meantime, but you can play with a version based on v2.7.0 by fetching
> > the "shortlog-trailers-historical" branch from
> > https://github.com/peff/git.git.
> > 
> > And then things like:
> > 
> >   git shortlog --ident=tested-by --format='...tested a patch by %an'
> > 
> > work (and you can put whatever commit items you want into the --format,
> > including just dumping the hash if you want to do more analysis).
> > 
> > -Peff
> 
> This sounds interesting to me! When I have some more time to take a
> look at this i might see if I can revive it.

Can the terminology please be standardized to what was once called bylines?

https://patchwork.kernel.org/patch/9307703/
Jacob Keller· Jan 20, 2017, 00:13 UTC · re: Joe Perches · lore

Re: [RFC for GIT] pull-request: add praise to people doing QA

On Thu, Jan 19, 2017 at 4:06 PM, Joe Perches <joe@perches.com> wrote:>> This sounds interesting to me! When I have some more time to take a

Show 7 quoted lines
>> look at this i might see if I can revive it.
>
> Can the terminology please be standardized to what
> was once called bylines?
>
> https://patchwork.kernel.org/patch/9307703/
>

I am fairly certain we've settled on "trailers" at this point. I don't have an objection to either name, but most of the code today uses trailers.

Thanks, Jake

← back to recent threads