|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.11 v3 1/1] Add new add_maintainers.pl script to optimise the workflow when using git format-patch with get_maintainer.pl
On 05/10/2018 12:38 PM, George Dunlap wrote:
> On 05/04/2018 09:36 AM, Lars Kurth wrote:
>> The tool covers step 2 of the following workflow
>>
>> Step 1: git format-patch ... -o <patchdir> ...
>> Step 2: ./scripts/add_maintainers.pl -d <patchdir>
>> This overwrites *.patch files in <patchdir>
>> Step 3: git send-email -to xen-devel@xxxxxxxxxxxxxxxxxxxx
>> <patchdir>/*.patchxm
>>
>> I manually tested all options and the most common combinations
>> on Mac.
>>
>> Changes since v1:
>> - Added RAB (indicated by Juergen on IRC that this is OK)
>> - Remove trailing whitespaces
>> - Renamed --prefix to --reroll-count
>> - Cleaned up short options -v, ... to be in line with git
>> - Added --tags|-t option to add AB, RAB and RB emails to CC list
>> - Added --insert|-i mode to allow for people adding CCs to commit message
>> instead of the e-mail header (the header is the default)
>> - Moved common code into functions
>> - Added logic, such that the tool only insert's To: and Cc: statements
>> which were not there before, allowing for running the tool multiple times
>> on the same <patchdir>
>>
>> Changes since v2:
>> - Deleted --version and related infrastructure
>> - Added subroutine prototypes
>> - Removed AT and @lists declaration and used \@ in literals
>> - Changed usage message and options based on feedback
>> - Improved error handling
>> - Removed occurances of index() and replaced with regex
>> - Removed non-perl idioms
>> - Moved uniq statements to normalize and added info on what normalize does
>> - Read L: tags from MAINTAINERS file instead of using heuristic
>> - Fixed issues related to metacharacters in getmaintainers()
>> - Allow multiple -a | --arg values (because of this renamed --args)
>> - Identify tags via regex
>> - CC's from tags are only inserted in the mail header, never the body
>> - That is unless the new option --tagscc is used
>> - Added policy processing which includes reworking insert()
>> - Replaced -i|--insert with -p|--inspatch and -c|--inscover now using
>> policies
>> - Added new policies to cover for all user requests
>> - Rewrote help message to center around usage of policies
>> - Reordered some code (e.g. help string first to make code more easily
>> readable)
>>
>> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>> Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
>> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
>> Cc: Jan Beulich <jbeulich@xxxxxxxx>
>> Cc: Julien Grall <julien.grall@xxxxxxx>
>> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
>> Cc: Tim Deegan <tim@xxxxxxx>
>> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
>> Signed-off-by: Lars Kurth <lars.kurth@xxxxxxxxxx>
>> Release-acked-by: Juergen Gross <jgross@xxxxxxxx>
>> ---
>> scripts/add_maintainers.pl | 512
>> +++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 512 insertions(+)
>> create mode 100755 scripts/add_maintainers.pl
>>
>> diff --git a/scripts/add_maintainers.pl b/scripts/add_maintainers.pl
>> new file mode 100755
>> index 0000000000..11ae60d888
>> --- /dev/null
>> +++ b/scripts/add_maintainers.pl
>> @@ -0,0 +1,512 @@
>> +#!/usr/bin/perl -w
>> +# (c) 2018, Lars Kurth <lars.kurth@xxxxxxxxxx>
>> +#
>> +# Add maintainers to patches generated with git format-patch
>> +#
>> +# Usage: perl scripts/add_maintainers.pl [OPTIONS] -patchdir <patchdir>
>> +#
>> +# Prerequisites: Execute
>> +# git format-patch ... -o <patchdir> ...
>> +#
>> +# ./scripts/get_maintainer.pl is present in the tree
>> +#
>> +# Licensed under the terms of the GNU GPL License version 2
>> +
>> +use strict;
>> +
>> +use Getopt::Long qw(:config no_auto_abbrev);
>> +use File::Basename;
>> +use List::MoreUtils qw(uniq);
>> +
>> +sub getmaintainers ($$$);
>> +sub gettagsfrompatch ($$$;$);
>> +sub normalize ($$);
>> +sub insert ($$$$);
>> +sub hastag ($$);
>> +
>> +# Tool Variables
>> +my $tool = $0;
>> +my $usage = <<EOT;
>> +USAGE: $tool [options] (--patchdir | -d) <patchdir>
>> +
>> +OPTIONS:
>> +--------
>> + --reroll-count <n> | -v <n>
>> + Choose patch files for specific version. This results into the
>> + following filters on <patchdir>
>> + 0: default - *.patch
>> + >1: v<n>*.patch
>> + --inspatch (top|ccbody|cc---|none) | -p (top|ccbody|cc---|none)
>> + Insert email addresses into *.patch files according to the POLICY
>> + See section POLICY:
>> + --inscover (top|ccend|none) | -c (top|ccend|none)
>> + Insert email addresses into cover letteraccording to the POLICY
>> + See section PROCESSING POLICY:
>> + --tags | -t
>> + Read email addresses from tags and add to CC list.
>> + Note that git send-email does not do this. It will add the senders
>> + email adress to the CC list though
>> + --tagscc
>> + Same as tags, only that in this case CCs extracted from tags
>> + are treated like CCs that have come from the *.patch file
>
> Not clear on the difference between these.
>
>> + --arg <argument> | -a <argument> ...
>> + Arguments passed on to get_maintainer.pl
>> + This option can be used multiple times, e.g. -a <a1> -a <a2> ...
>> + --verbose
>> + Show more output
>> + --help | -h
>> + Show this help information
>> +
>> +PROCESSING POLICY:
>
> Why is this called 'policy'? This seems to be definitions.
>
>> +------------------
>> + *.patch files consist of several sections relevant to processing:
>> + <top>: This is the email header containing email related information
>> + It ends with the Subject: line
>> + <body>: This is the body that ends up in the commit message
>> + It ends with ---
>> + <--->: This section contains the actual patches. CCs added here are
>> + processed by git send-email, but are not stored in the commit
>> + message. Some people add CCs into this section
>
> <---> is not a normal name (how do you say it? "dash-dash-dash"?), and
> worse yet might be confused with an option. `--inspatch cc---` looks
> like there was some sort of mistake. "Top" would normally mean, "Top of
> the body of the mail".
>
> I think it would be better to call these sections <header>, <commit> and
> "commit message", and <comment> and "reviewer comment section",
> respectively.
>
>
>> + <ccend>: It ends with '-- '
>> +
>> + Note that cover letters do not have the <body> section.
>> +
>> + The following options specifiy how CCs are insertied into *.patch files
>> + top: Insert CCs into the email header
>> + Insert CCs from *-by: tags and TOs from mailing lists into the
>> header
>> + (this is the default)
>> + ccbody: Insert CCs into body
>> + Insert CCs from *-by: tags and TOs from mailing lists into the
>> header
>> + unless specified otherwise (via --tagscc).
>> + cc---: Insert CCs just after the --- line
>> + Insert CCs from *-by: tags and TOs from mailing lists into the
>> header
>> + unless specified otherwise (via --tagscc).
>> + ccend: Insert CCs before the '-- ' line
>> + Insert CCs from *-by: tags and TOs from mailing lists into the
>> header
>> + unless specified otherwise (via --tagscc).
>> + none: Neither insert TO, CCs from --tags nor other CCs
>
> I don't really get this section.
>
> What about having the functionality be something like this? (Obvious
> this would need some code changes as well. Also I guessed what the
> significance of the `-- ` is in the cover letter, so correct me if I'm
> wrong.)
>
> ---
> USAGE: $tool [options] (--patchdir | -d) <patchdir>
>
> OPTIONS:
> --------
>
> --reroll-count <n> | -v <n>
> Choose patch files for specific version. This results into the
> following filters on <patchdir>
> 0: default - *.patch
> >1: v<n>*.patch
>
> --patchcc (top|commit|comment|none) | -p (top|commit|comment|none)
>
> Insert CC lines into *.patch files in the specified location.
> See LOCATIONS for a definition of the various locations.
>
> The default is `top`.
>
> --covercc (top|end|none) | -c (top|end|none)
>
> Insert CC lines into cover letter in the specified location. See
> LOCATIONS for a definition of the various locations.
>
> The default is `top`.
>
> --tags | -t
>
> In addition to the output of get_maintainer.pl, include email
> addresses from commit tags (e.g., Reviewed-by, Tested-by, &c) in
> the list of CC lines to insert.
OK, having talked to you IRL I now understand what these are about. How
about this:
---
--tags | -t
In addition to the output of get_maintainer.pl, include email
addresses from commit tags (e.g., Reviewed-by, Tested-by, &c) in
the list of CC lines to insert.
For patches, these extra lines will be inserted as specified by
the --patchcc option, *unless* that option is set to `commit`. In
that case, rather than duplicate tags in the commit message with
CC lines, the extra CC lines will be added to he header instead.
--tagscc
As above, but `commit` location is not special-cased: In the case
of `commit`, all CCs will be added to the bottom of the commit
message, even if they duplicate other tags in the commit message.
---
Or, perhaps even better:
---
--tags[=(split|combined)] | -t
In addition to the output of get_maintainer.pl, collect email
addresses from commit tags (e.g., Reviewed-by, Tested-by, &c) in
the list of CC lines to insert.
If 'split' is specified, these tag CC lines will be added to the
header, rather than in the location specified by --patchcc. In
the case that `commit` is specified, this will avoid duplicating
tags and CC lines in the commit message. This is the default when
`--patchcc commit` is specified.
If 'combined' is specified, these tag CC lines will be added along
with the maintainer CC's, wherever specified by --patchcc. This
is the default when "header" or "comment" are specified.
---
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |