unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#58813: can't substitute etc/teams.scm command as doc suggests
@ 2022-10-27  3:50 Maxim Cournoyer
  2022-10-27  6:08 ` Liliana Marie Prikler
                   ` (2 more replies)
  0 siblings, 3 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2022-10-27  3:50 UTC (permalink / raw)
  To: 58813

Hi,

Today, I tried;

--8<---------------cut here---------------start------------->8---
$ git send-email --to=guix-patches@gnu.org \
  $(./etc/teams.scm cc-members origin/master HEAD) 0000-cover-letter.patch
fatal: ambiguous argument 'some.email@redacted.com"': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
format-patch -o /tmp/pFSRbRNNoU --add-header="X-Debbugs-Cc: redacted@gmail.com" --add-header="X-Debbugs-Cc: redacted@email" [...]: command returned error: 128

$ ./etc/teams.scm cc-members origin/master HEAD
--add-header="X-Debbugs-Cc: redacted@email" --add-header="X-Debbugs-Cc: redacted@email" ...
--8<---------------cut here---------------end--------------->8---

You can see the command fails; this is because when using Bash command
substitution $(), the quotes in the result are not interpreted and are
thus part of the value (literals), which then gets split on white space.

As a quick hacky fix,  I tried removing the space and double quotes
like:

modified   etc/teams.scm.in
@@ -514,7 +514,7 @@ (define (cc . teams)
   "Return arguments for `git send-email' to notify the members of the given
 TEAMS when a patch is received by Debbugs."
   (format #true
-          "~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
+          "~{--add-header=X-Debbugs-Cc:~a~^ ~}"
           (map person-email
                (delete-duplicates (append-map team-members teams) equal?))))

and sent a patch with that command:

git send-email --to=guix-patches@gnu.org \
  $(./etc/teams.scm cc-members origin/master HEAD 0000-cover-letter.patch

It created https://issues.guix.gnu.org/58812 with it, but I don't see
any of the X-Debbugs-Cc headers.  Mmmh.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: can't substitute etc/teams.scm command as doc suggests
  2022-10-27  3:50 bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
@ 2022-10-27  6:08 ` Liliana Marie Prikler
  2022-10-27 12:40   ` Maxim Cournoyer
  2023-02-26  3:55 ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
  2023-03-07 11:35 ` bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission Simon Tournier
  2 siblings, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2022-10-27  6:08 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813

Am Mittwoch, dem 26.10.2022 um 23:50 -0400 schrieb Maxim Cournoyer:
> Hi,
> 
> Today, I tried;
> 
> --8<---------------cut here---------------start------------->8---
> $ git send-email --to=guix-patches@gnu.org \
>   $(./etc/teams.scm cc-members origin/master HEAD) 0000-cover-
> letter.patch
> fatal: ambiguous argument 'some.email@redacted.com"': unknown
> revision or path not in the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git <command> [<revision>...] -- [<file>...]'
> format-patch -o /tmp/pFSRbRNNoU --add-header="X-Debbugs-Cc:
> redacted@gmail.com" --add-header="X-Debbugs-Cc: redacted@email"
> [...]: command returned error: 128
> 
> $ ./etc/teams.scm cc-members origin/master HEAD
> --add-header="X-Debbugs-Cc: redacted@email" --add-header="X-Debbugs-
> Cc: redacted@email" ...
> --8<---------------cut here---------------end--------------->8---
> 
> You can see the command fails; this is because when using Bash
> command substitution $(), the quotes in the result are not
> interpreted and are thus part of the value (literals), which then
> gets split on white space.
> 
> As a quick hacky fix,  I tried removing the space and double quotes
> like:
> 
> modified   etc/teams.scm.in
> @@ -514,7 +514,7 @@ (define (cc . teams)
>    "Return arguments for `git send-email' to notify the members of
> the given
>  TEAMS when a patch is received by Debbugs."
>    (format #true
> -          "~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
> +          "~{--add-header=X-Debbugs-Cc:~a~^ ~}"
>            (map person-email
>                 (delete-duplicates (append-map team-members teams)
> equal?))))
> 
> and sent a patch with that command:
> 
> git send-email --to=guix-patches@gnu.org \
>   $(./etc/teams.scm cc-members origin/master HEAD 0000-cover-
> letter.patch
> 
> It created https://issues.guix.gnu.org/58812 with it, but I don't see
> any of the X-Debbugs-Cc headers.  Mmmh.
Note that the existing etc/teams also assumes there are no funny
characters in the quote.  So it's susceptible to good ol' bobby tables.

Could we, instead of outputting a command, make it so that we can pass
an already formatted patch and etc/teams rewrites it?

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: can't substitute etc/teams.scm command as doc suggests
  2022-10-27  6:08 ` Liliana Marie Prikler
@ 2022-10-27 12:40   ` Maxim Cournoyer
  2022-10-27 16:27     ` Liliana Marie Prikler
  0 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2022-10-27 12:40 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 58813

Hi,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Mittwoch, dem 26.10.2022 um 23:50 -0400 schrieb Maxim Cournoyer:
>> Hi,
>> 
>> Today, I tried;
>> 
>> --8<---------------cut here---------------start------------->8---
>> $ git send-email --to=guix-patches@gnu.org \
>>   $(./etc/teams.scm cc-members origin/master HEAD) 0000-cover-
>> letter.patch
>> fatal: ambiguous argument 'some.email@redacted.com"': unknown
>> revision or path not in the working tree.
>> Use '--' to separate paths from revisions, like this:
>> 'git <command> [<revision>...] -- [<file>...]'
>> format-patch -o /tmp/pFSRbRNNoU --add-header="X-Debbugs-Cc:
>> redacted@gmail.com" --add-header="X-Debbugs-Cc: redacted@email"
>> [...]: command returned error: 128
>> 
>> $ ./etc/teams.scm cc-members origin/master HEAD
>> --add-header="X-Debbugs-Cc: redacted@email" --add-header="X-Debbugs-
>> Cc: redacted@email" ...
>> --8<---------------cut here---------------end--------------->8---
>> 
>> You can see the command fails; this is because when using Bash
>> command substitution $(), the quotes in the result are not
>> interpreted and are thus part of the value (literals), which then
>> gets split on white space.
>> 
>> As a quick hacky fix,  I tried removing the space and double quotes
>> like:
>> 
>> modified   etc/teams.scm.in
>> @@ -514,7 +514,7 @@ (define (cc . teams)
>>    "Return arguments for `git send-email' to notify the members of
>> the given
>>  TEAMS when a patch is received by Debbugs."
>>    (format #true
>> -          "~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
>> +          "~{--add-header=X-Debbugs-Cc:~a~^ ~}"
>>            (map person-email
>>                 (delete-duplicates (append-map team-members teams)
>> equal?))))
>> 
>> and sent a patch with that command:
>> 
>> git send-email --to=guix-patches@gnu.org \
>>   $(./etc/teams.scm cc-members origin/master HEAD 0000-cover-
>> letter.patch
>> 
>> It created https://issues.guix.gnu.org/58812 with it, but I don't see
>> any of the X-Debbugs-Cc headers.  Mmmh.
> Note that the existing etc/teams also assumes there are no funny
> characters in the quote.  So it's susceptible to good ol' bobby tables.
>
> Could we, instead of outputting a command, make it so that we can pass
> an already formatted patch and etc/teams rewrites it?

The solution suggested to me in #bash would be to turn etc/teams.scm
into a git wrapper, that could invoke git with all the arguments at once
(allowing people to pass arguments themselves).  I'm told the git
completion could be hooked to such script so that users can still enjoy
git tab-completion when using etc/teams.scm, although I haven't
researched how that'd all work.

A similar idea proposed by selckin on #git would be to have our
etc/teams.scm script receive the complete git command, and append the
args to it itself (and invoke it), like so:

./etc/teams.scm cc mentors -- git send-email --to XXX@debbugs.gnu.org *.patch

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: can't substitute etc/teams.scm command as doc suggests
  2022-10-27 12:40   ` Maxim Cournoyer
@ 2022-10-27 16:27     ` Liliana Marie Prikler
  0 siblings, 0 replies; 43+ messages in thread
From: Liliana Marie Prikler @ 2022-10-27 16:27 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 58813

Am Donnerstag, dem 27.10.2022 um 08:40 -0400 schrieb Maxim Cournoyer:
> Hi,
> 
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> 
> > Am Mittwoch, dem 26.10.2022 um 23:50 -0400 schrieb Maxim Cournoyer:
> > > Hi,
> > > 
> > > Today, I tried;
> > > 
> > > --8<---------------cut here---------------start------------->8---
> > > $ git send-email --to=guix-patches@gnu.org \
> > >   $(./etc/teams.scm cc-members origin/master HEAD) 0000-cover-
> > > letter.patch
> > > fatal: ambiguous argument 'some.email@redacted.com"': unknown
> > > revision or path not in the working tree.
> > > Use '--' to separate paths from revisions, like this:
> > > 'git <command> [<revision>...] -- [<file>...]'
> > > format-patch -o /tmp/pFSRbRNNoU --add-header="X-Debbugs-Cc:
> > > redacted@gmail.com" --add-header="X-Debbugs-Cc: redacted@email"
> > > [...]: command returned error: 128
> > > 
> > > $ ./etc/teams.scm cc-members origin/master HEAD
> > > --add-header="X-Debbugs-Cc: redacted@email" --add-header="X-
> > > Debbugs-
> > > Cc: redacted@email" ...
> > > --8<---------------cut here---------------end--------------->8---
> > > 
> > > You can see the command fails; this is because when using Bash
> > > command substitution $(), the quotes in the result are not
> > > interpreted and are thus part of the value (literals), which then
> > > gets split on white space.
> > > 
> > > As a quick hacky fix,  I tried removing the space and double
> > > quotes
> > > like:
> > > 
> > > modified   etc/teams.scm.in
> > > @@ -514,7 +514,7 @@ (define (cc . teams)
> > >    "Return arguments for `git send-email' to notify the members
> > > of
> > > the given
> > >  TEAMS when a patch is received by Debbugs."
> > >    (format #true
> > > -          "~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
> > > +          "~{--add-header=X-Debbugs-Cc:~a~^ ~}"
> > >            (map person-email
> > >                 (delete-duplicates (append-map team-members
> > > teams)
> > > equal?))))
> > > 
> > > and sent a patch with that command:
> > > 
> > > git send-email --to=guix-patches@gnu.org \
> > >   $(./etc/teams.scm cc-members origin/master HEAD 0000-cover-
> > > letter.patch
> > > 
> > > It created https://issues.guix.gnu.org/58812 with it, but I don't
> > > see
> > > any of the X-Debbugs-Cc headers.  Mmmh.
> > Note that the existing etc/teams also assumes there are no funny
> > characters in the quote.  So it's susceptible to good ol' bobby
> > tables.
> > 
> > Could we, instead of outputting a command, make it so that we can
> > pass
> > an already formatted patch and etc/teams rewrites it?
> 
> The solution suggested to me in #bash would be to turn etc/teams.scm
> into a git wrapper, that could invoke git with all the arguments at
> once (allowing people to pass arguments themselves).  I'm told the
> git completion could be hooked to such script so that users can still
> enjoy git tab-completion when using etc/teams.scm, although I haven't
> researched how that'd all work.
> 
> A similar idea proposed by selckin on #git would be to have our
> etc/teams.scm script receive the complete git command, and append the
> args to it itself (and invoke it), like so:
> 
> ./etc/teams.scm cc mentors -- git send-email --to
> XXX@debbugs.gnu.org *.patch
I think we should go with the former and implement a proper "guix send-
email" ;)




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2022-10-27  3:50 bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
  2022-10-27  6:08 ` Liliana Marie Prikler
@ 2023-02-26  3:55 ` Maxim Cournoyer
  2023-02-26  8:25   ` Liliana Marie Prikler
  2023-03-03  9:54   ` Ludovic Courtès
  2023-03-07 11:35 ` bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission Simon Tournier
  2 siblings, 2 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-02-26  3:55 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

Fixes <https://issues.guix.gnu.org/58813>.

* doc/contributing.texi (Sending a Patch Series): Mention Patman.  Adjust the
examples to no longer showcase broken command substitutions.  Add a section
about how to use Patman, with examples.

---

 doc/contributing.texi | 119 ++++++++++++++++++++++++++++++++++++++----
 doc/guix.texi         |   2 +-
 2 files changed, 110 insertions(+), 11 deletions(-)

diff --git a/doc/contributing.texi b/doc/contributing.texi
index c436bc4a31..2a12dffefe 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1416,12 +1416,19 @@ git config --local sendemail.thread no
 @cindex @code{git format-patch}
 
 @unnumberedsubsubsec Single Patches
-@anchor{Single Patches}
-The @command{git send-email} command is the best way to send both single
-patches and patch series (@pxref{Multiple Patches}) to the Guix mailing
-list.  Sending patches as email attachments may make them difficult to
-review in some mail clients, and @command{git diff} does not store commit
-metadata.
+@cindex patman patch manager
+@cindex patch management, via patman
+@anchor{Single Patches} The @command{git send-email} command is the best
+way to send both single patches and patch series (@pxref{Multiple
+Patches}) to the Guix mailing list.  Sending patches as email
+attachments may make them difficult to review in some mail clients, and
+@command{git diff} does not store commit metadata.  If you want
+something a bit higher level than @command{git send-email} to organize
+your patch submissions and take care of its various options for you, you
+may want to try the @command{patman} command, from the eponymous
+package.  Patman's help can be accessed via @samp{patman -H} or as an
+Info manual after installing the @code{u-boot-documentation} package
+(@pxref{Patman patch manager,,,u-boot,The U-Boot Documentation}).
 
 @quotation Note
 The @command{git send-email} command is provided by the @code{send-email}
@@ -1521,7 +1528,7 @@ that we can send the rest of the patches to.
 @example
 $ git send-email outgoing/0000-cover-letter.patch -a \
       --to=guix-patches@@gnu.org \
-      $(etc/teams.scm cc-members ...)
+      --cc=team-member1@@example.org --cc=team-member2@@example.org ...
 $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
 @end example
 
@@ -1535,7 +1542,7 @@ can send the actual patches to the newly-created issue address.
 @example
 $ git send-email outgoing/*.patch \
       --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
-      $(etc/teams.scm cc-members ...)
+      --cc=team-member1@@example.org --cc=team-member2@@example.org ...
 $ rm -rf outgoing # we don't need these anymore
 @end example
 
@@ -1578,18 +1585,110 @@ You can run the following command to have the @code{Mentors} team put in
 CC of a patch series:
 
 @example
-$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
+$ ./etc/teams.scm cc mentors
 @end example
 
+then note the @var{output} of the script.
+
+@example
+$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org @var{output} *.patch
+@end example
+
+Taking care to manually splice the @var{output} of the
+@file{etc/teams.scm} script into the command.
+
 The appropriate team or teams can also be inferred from the modified
 files.  For instance, if you want to send the two latest commits of the
 current Git repository to review, you can run:
 
 @example
 $ guix shell -D guix
-[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
+[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org @var{output} *.patch
 @end example
 
+@cindex patman, usage example
+As manually stitching the output of the @file{etc/teams.scm} script in
+the @command{git send-email} command can get tedious; you may prefer to
+use Patman to automate this for you.  Its necessary basic configuration
+is already found at the root of the Guix repository, in the
+@file{.patman} file.  Another useful bit to have is a default
+destination for the @command{git send-email} command.  You can specify
+it in your repository-local Guix @file{.git/config} file with:
+
+@example
+[sendemail]
+        to = guix-patches@@gnu.org
+@end example
+
+To send a long series to Debbugs, the patches can be written to the
+current directory with:
+
+@example
+patman -n
+@end example
+
+The first patch should then be sent using @samp{git send-email
+0000-cover-letter.patch}, as explained earlier (@pxref{Multiple
+Patches}).
+
+After Debbugs has issued a unique bug email in reply to that initial
+patch submission, e.g. @email{NNNNN@@debbugs.gnu.org}, you can save this
+information into the top commit of your patch series (it doesn't matter
+which, but it's more convenient to amend it later when it's at the top)
+like so, via the Patman-specific @code{Series-to} git message tag:
+
+@example
+gnu: Add foo.
+
+* gnu/packages/dummy.scm: Add foo.
+
+Series-to: NNNNN@@debbugs.gnu.org
+@end example
+
+You can then send your series to that address with the right people
+automatically added in CC by simply issuing:
+
+@example
+patman
+@end example
+
+After addressing the first round of review comments, you can annotate a
+v2 patch series by adding these Patman-specific git message tags:
+
+@example
+gnu: Add foo.
+
+* gnu/packages/dummy.scm: Add foo.
+
+Series-to: NNNNN@@debbugs.gnu.org
+Series-version: 2
+Series-changes: 2
+- Factorized X into Y and Z
+
+@end example
+
+The @command{patman} command will then take care to automate the right
+@code{git send-email} command and produce patch annotations useful for
+the reviewers.
+
+After the review is complete, if you are the one merging your own
+changes, you should take care to strip any Patman git message tags.
+This can be done by writing the patches to the current directory with:
+
+@example
+patman -n
+@end example
+
+and then applying them to the main branch with:
+
+@example
+git am *.patch
+@end example
+
+For more information, run @samp{patman -H} or read its info manual,
+which can be installed with the @code{u-boot-documentation} package
+(@pxref{Patman patch manager,,,u-boot,The U-Boot Documentation}).
+
 @node Tracking Bugs and Patches
 @section Tracking Bugs and Patches
 
diff --git a/doc/guix.texi b/doc/guix.texi
index a7ef00f421..5a4900d7cf 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -49,7 +49,7 @@ Copyright @copyright{} 2017 humanitiesNerd@*
 Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@*
 Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@*
 Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@*
-Copyright @copyright{} 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer@*
 Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*

base-commit: 9a2cf9ef0a9ece9aa0dcb24a31fe0c313d06988f
-- 
2.39.1





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-02-26  3:55 ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
@ 2023-02-26  8:25   ` Liliana Marie Prikler
  2023-02-26 17:11     ` Maxim Cournoyer
  2023-03-03  9:54   ` Ludovic Courtès
  1 sibling, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-02-26  8:25 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813; +Cc: ludo, zimon.toutoune

Am Samstag, dem 25.02.2023 um 22:55 -0500 schrieb Maxim Cournoyer:
> Fixes <https://issues.guix.gnu.org/58813>.
> 
> * doc/contributing.texi (Sending a Patch Series): Mention Patman. 
> Adjust the examples to no longer showcase broken command
> substitutions.  Add a section about how to use Patman, with examples.
It looks like 61797 addresses the broken command – I'd still like the
patman changes, but perhaps we can reduce the impact?

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-02-26  8:25   ` Liliana Marie Prikler
@ 2023-02-26 17:11     ` Maxim Cournoyer
  2023-02-27  0:45       ` Tobias Geerinckx-Rice via Bug reports for GNU Guix
  0 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-02-26 17:11 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: ludo, 58813, zimon.toutoune

Hi Liliana,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Samstag, dem 25.02.2023 um 22:55 -0500 schrieb Maxim Cournoyer:
>> Fixes <https://issues.guix.gnu.org/58813>.
>> 
>> * doc/contributing.texi (Sending a Patch Series): Mention Patman. 
>> Adjust the examples to no longer showcase broken command
>> substitutions.  Add a section about how to use Patman, with examples.
> It looks like 61797 addresses the broken command – I'd still like the
> patman changes, but perhaps we can reduce the impact?

It seems Tobias realized that change wouldn't be sufficient to fix the
underlying problem, and closed it.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-02-26 17:11     ` Maxim Cournoyer
@ 2023-02-27  0:45       ` Tobias Geerinckx-Rice via Bug reports for GNU Guix
  2023-02-27 16:43         ` Maxim Cournoyer
  0 siblings, 1 reply; 43+ messages in thread
From: Tobias Geerinckx-Rice via Bug reports for GNU Guix @ 2023-02-27  0:45 UTC (permalink / raw)
  To: 58813, maxim.cournoyer, liliana.prikler; +Cc: ludo, zimon.toutoune

Hi,

> teams.scm

I closed the bug-that-didn't-fix, but that still leaves a git-specific command that doesn't actually facilitate git.¹

I guess salvaging 'teams.scm cc' into a generic 'Cc:' header generator makes some sense?  Without the $() use case.

Otherwise: shall we simply remove it?

Kind regards,

T G-R

Sent on the go.  Excuse or enjoy my brevity.

1: Code golfing bash snippets that make it 'work' doesn't count, but it's fun.




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-02-27  0:45       ` Tobias Geerinckx-Rice via Bug reports for GNU Guix
@ 2023-02-27 16:43         ` Maxim Cournoyer
  0 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-02-27 16:43 UTC (permalink / raw)
  To: Tobias Geerinckx-Rice; +Cc: ludo, Liliana Marie Prikler, 58813, zimon.toutoune

Hello,

Tobias Geerinckx-Rice <me@tobias.gr> writes:

> Hi,
>
>> teams.scm
>
> I closed the bug-that-didn't-fix, but that still leaves a git-specific
> command that doesn't actually facilitate git.¹
>
> I guess salvaging 'teams.scm cc' into a generic 'Cc:' header generator
> makes some sense?  Without the $() use case.
>
> Otherwise: shall we simply remove it?

I think I'd leave it; people can still use it to manually copy-paste its
output into their command.  That's not great, but it's better than
nothing.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-02-26  3:55 ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
  2023-02-26  8:25   ` Liliana Marie Prikler
@ 2023-03-03  9:54   ` Ludovic Courtès
  2023-03-03 17:26     ` Liliana Marie Prikler
  2023-03-07  1:07     ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
  1 sibling, 2 replies; 43+ messages in thread
From: Ludovic Courtès @ 2023-03-03  9:54 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: liliana.prikler, 58813, zimon.toutoune

Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

> Fixes <https://issues.guix.gnu.org/58813>.

It’s only tangentially related, no?

> * doc/contributing.texi (Sending a Patch Series): Mention Patman.  Adjust the
> examples to no longer showcase broken command substitutions.  Add a section
> about how to use Patman, with examples.

I’m not convinced we’d want to advocate for yet another tool.  I feel
like this would make patch submission guidelines even more complex, or
at least look more complex.

Also, how many of the ~40 committers would be able to provide guidance
with patman?  That shouldn’t be the only criterion, but it certainly is
an important one.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-03-03  9:54   ` Ludovic Courtès
@ 2023-03-03 17:26     ` Liliana Marie Prikler
  2023-03-06 14:53       ` bug#58813: ‘guix style’ flaws Ludovic Courtès
  2023-03-07  1:07     ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
  1 sibling, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-03-03 17:26 UTC (permalink / raw)
  To: Ludovic Courtès, Maxim Cournoyer; +Cc: 58813, zimon.toutoune

Am Freitag, dem 03.03.2023 um 10:54 +0100 schrieb Ludovic Courtès:
> Hi,
> 
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
> 
> > Fixes <https://issues.guix.gnu.org/58813>.
> 
> It’s only tangentially related, no?
> 
> > * doc/contributing.texi (Sending a Patch Series): Mention Patman. 
> > Adjust the examples to no longer showcase broken command
> > substitutions.  Add a section about how to use Patman, with
> > examples.
> 
> I’m not convinced we’d want to advocate for yet another tool.  I feel
> like this would make patch submission guidelines even more complex,
> or at least look more complex.
I do think it'd be fine to have more options (in a "use what you find
convenient" way), but as-is this patch replaces one imperfect tool with
one where:

> [H]ow many of the ~40 committers would be able to provide guidance
> with patman?  
I'm not one of them :(

> That shouldn’t be the only criterion, but it certainly is an
> important one.
I think an important criterion should be what aspiring committers can
expect when they follow the advice as written.  Compare and contrast
'guix style', where committers often have to point out its flaws.

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: ‘guix style’ flaws
  2023-03-03 17:26     ` Liliana Marie Prikler
@ 2023-03-06 14:53       ` Ludovic Courtès
  2023-03-06 17:42         ` Maxim Cournoyer
  0 siblings, 1 reply; 43+ messages in thread
From: Ludovic Courtès @ 2023-03-06 14:53 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 58813, Maxim Cournoyer, zimon.toutoune

Liliana Marie Prikler <liliana.prikler@gmail.com> skribis:

> Compare and contrast
> 'guix style', where committers often have to point out its flaws.

Hi!  Drifting off-topic, but: I’d really like people to report specific
issues to bug-guix so we can act on them and reach the point where the
tool’s output is good 99% of the time.

Ludo’.




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: ‘guix style’ flaws
  2023-03-06 14:53       ` bug#58813: ‘guix style’ flaws Ludovic Courtès
@ 2023-03-06 17:42         ` Maxim Cournoyer
  0 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-03-06 17:42 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Liliana Marie Prikler, 58813, zimon.toutoune

Hi Ludo,

Ludovic Courtès <ludo@gnu.org> writes:

> Liliana Marie Prikler <liliana.prikler@gmail.com> skribis:
>
>> Compare and contrast
>> 'guix style', where committers often have to point out its flaws.
>
> Hi!  Drifting off-topic, but: I’d really like people to report specific
> issues to bug-guix so we can act on them and reach the point where the
> tool’s output is good 99% of the time.

See #61013 :-).

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-03-03  9:54   ` Ludovic Courtès
  2023-03-03 17:26     ` Liliana Marie Prikler
@ 2023-03-07  1:07     ` Maxim Cournoyer
  2023-03-10  9:01       ` Ludovic Courtès
  1 sibling, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-03-07  1:07 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: liliana.prikler, 58813, zimon.toutoune

Hi Ludovic,

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> Fixes <https://issues.guix.gnu.org/58813>.
>
> It’s only tangentially related, no?

It's not totally a tangent, because it removes examples which do not
work, and replace them with ones that do work, and recommend a tool that
can do what the previous shell command substitution failed to do
correctly (due to shell parsing rules).

>> * doc/contributing.texi (Sending a Patch Series): Mention Patman.  Adjust the
>> examples to no longer showcase broken command substitutions.  Add a section
>> about how to use Patman, with examples.
>
> I’m not convinced we’d want to advocate for yet another tool.  I feel
> like this would make patch submission guidelines even more complex, or
> at least look more complex.
>
> Also, how many of the ~40 committers would be able to provide guidance
> with patman?  That shouldn’t be the only criterion, but it certainly is
> an important one.

Since it's just documented as another tool on top, I don't think this
matters too much (it can be adopted or not).  It's also a very simple
tool, which is more often than not invoked as simply 'patman' or 'patman
-n' (for dry-run).

I've also discovered about '--cc-cmd', which could be used with the
recently introduced get-maintainer mode (which was added for patman
support); it can be used like this:

--8<---------------cut here---------------start------------->8---
git send-email --cc-cmd='etc/teams.scm get-maintainer' --dry-run -1
--8<---------------cut here---------------end--------------->8---

It does the same thing as the copy/pasting of the output of

--8<---------------cut here---------------start------------->8---
etc/teams.scm cc-members HEAD^ HEAD
--8<---------------cut here---------------end--------------->8---

To the git send-email command, but with one difference: it uses '--cc'
for the email addresses instead of the nicer --add-header="X-Debbugs-Cc:
mail@example.org" ones.  The later is best because when initially
sending the message to Debbugs, there's no bug # known yet, and the
receivers would be left to guess and perhaps even reply erroneously to
guix-patches@gnu.org and create a new ticket.

For this reason, I'm toying with the idea of contributing a "--x-cmd"
option to git send-email, which would be a script that outputs arbitrary
git send-email options to add to its command line.

To be continued...

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2022-10-27  3:50 bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
  2022-10-27  6:08 ` Liliana Marie Prikler
  2023-02-26  3:55 ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
@ 2023-03-07 11:35 ` Simon Tournier
  2023-03-07 16:46   ` Maxim Cournoyer
  2 siblings, 1 reply; 43+ messages in thread
From: Simon Tournier @ 2023-03-07 11:35 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, maxim.cournoyer

From: Maxim Cournoyer <maxim.cournoyer@gmail.com>

Fixes <https://issues.guix.gnu.org/58813>.

* doc/contributing.texi (Sending a Patch Series): Adjust the examples to no
longer showcase broken command substitutions.
(Patch management using patman): New section about how to use Patman, with
examples.
---
 doc/contributing.texi | 111 ++++++++++++++++++++++++++++++++++++++++--
 doc/guix.texi         |   2 +-
 2 files changed, 108 insertions(+), 5 deletions(-)

Hi,

My proposal is to have Patch management using patman as a dedicated section.
This way, we keep the submission guidelines simple using good ol'
git-send-email.  And by being a dedicated section, it acts as the Perfect
Setup: that's a tool very handy for doing the patch management task.

WDYT?

Cheers,
simon


diff --git a/doc/contributing.texi b/doc/contributing.texi
index 61c05c2489..197f9719ba 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1531,7 +1531,7 @@ that we can send the rest of the patches to.
 @example
 $ git send-email outgoing/0000-cover-letter.patch -a \
       --to=guix-patches@@gnu.org \
-      $(etc/teams.scm cc-members ...)
+      --cc=team-member1@@example.org --cc=team-member2@@example.org ...
 $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
 @end example
 
@@ -1545,7 +1545,7 @@ can send the actual patches to the newly-created issue address.
 @example
 $ git send-email outgoing/*.patch \
       --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
-      $(etc/teams.scm cc-members ...)
+      --cc=team-member1@@example.org --cc=team-member2@@example.org ...
 $ rm -rf outgoing # we don't need these anymore
 @end example
 
@@ -1588,18 +1588,121 @@ You can run the following command to have the @code{Mentors} team put in
 CC of a patch series:
 
 @example
-$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
+$ ./etc/teams.scm cc mentors
 @end example
 
+then note the @var{output} of the script.
+
+@example
+$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org @var{output} *.patch
+@end example
+
+Taking care to manually splice the @var{output} of the
+@file{etc/teams.scm} script into the command.
+
 The appropriate team or teams can also be inferred from the modified
 files.  For instance, if you want to send the two latest commits of the
 current Git repository to review, you can run:
 
 @example
 $ guix shell -D guix
-[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
+[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org @var{output} *.patch
+@end example
+
+@node Patch management using @command{patman}
+@subsection Patch management using @command{patman}
+@cindex patman patch manager
+@cindex patch management, via patman
+
+If you want something a bit higher level than @command{git send-email}
+to organize your patch submissions and take care of its various options
+for you, you may want to try the @command{patman} command, from the
+eponymous package.  Patman's help can be accessed via @samp{patman -H}
+or as an Info manual after installing the @code{u-boot-documentation}
+package (@pxref{Patman patch manager,,,u-boot,The U-Boot
+Documentation}).
+
+As manually stitching the output of the @file{etc/teams.scm} script in
+the @command{git send-email} command can get tedious; you may prefer to
+use Patman to automate this for you.  Its necessary basic configuration
+is already found at the root of the Guix repository, in the
+@file{.patman} file.  Another useful bit to have is a default
+destination for the @command{git send-email} command.  You can specify
+it in your repository-local Guix @file{.git/config} file with:
+
+@example
+[sendemail]
+        to = guix-patches@@gnu.org
+@end example
+
+To send a long series to Debbugs, the patches can be written to the
+current directory with:
+
+@example
+patman -n
+@end example
+
+The first patch should then be sent using @samp{git send-email
+0000-cover-letter.patch}, as explained earlier (@pxref{Multiple
+Patches}).
+
+After Debbugs has issued a unique bug email in reply to that initial
+patch submission, e.g. @email{NNNNN@@debbugs.gnu.org}, you can save this
+information into the top commit of your patch series (it doesn't matter
+which, but it's more convenient to amend it later when it's at the top)
+like so, via the Patman-specific @code{Series-to} git message tag:
+
+@example
+gnu: Add foo.
+
+* gnu/packages/dummy.scm: Add foo.
+
+Series-to: NNNNN@@debbugs.gnu.org
 @end example
 
+You can then send your series to that address with the right people
+automatically added in CC by simply issuing:
+
+@example
+patman
+@end example
+
+After addressing the first round of review comments, you can annotate a
+v2 patch series by adding these Patman-specific git message tags:
+
+@example
+gnu: Add foo.
+
+* gnu/packages/dummy.scm: Add foo.
+
+Series-to: NNNNN@@debbugs.gnu.org
+Series-version: 2
+Series-changes: 2
+- Factorized X into Y and Z
+@end example
+
+The @command{patman} command will then take care to automate the right
+@code{git send-email} command and produce patch annotations useful for
+the reviewers.
+
+After the review is complete, if you are the one merging your own
+changes, you should take care to strip any Patman git message tags.
+This can be done by writing the patches to the current directory with:
+
+@example
+patman -n
+@end example
+
+and then applying them to the main branch with:
+
+@example
+git am *.patch
+@end example
+
+For more information, run @samp{patman -H} or read its info manual,
+which can be installed with the @code{u-boot-documentation} package
+(@pxref{Patman patch manager,,,u-boot,The U-Boot Documentation}).
+
 @node Tracking Bugs and Patches
 @section Tracking Bugs and Patches
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 6671ba9305..1fe03df3b7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -49,7 +49,7 @@ Copyright @copyright{} 2017 humanitiesNerd@*
 Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@*
 Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@*
 Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@*
-Copyright @copyright{} 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer@*
 Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*

base-commit: 26e9725c54df48eda8282e6716a7581a7755f8f9
-- 
2.38.1





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-07 11:35 ` bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission Simon Tournier
@ 2023-03-07 16:46   ` Maxim Cournoyer
  2023-03-07 17:39     ` Simon Tournier
  0 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-03-07 16:46 UTC (permalink / raw)
  To: Simon Tournier; +Cc: ludo, liliana.prikler, 58813

Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
>
> Fixes <https://issues.guix.gnu.org/58813>.
>
> * doc/contributing.texi (Sending a Patch Series): Adjust the examples to no
> longer showcase broken command substitutions.
> (Patch management using patman): New section about how to use Patman, with
> examples.
> ---
>  doc/contributing.texi | 111 ++++++++++++++++++++++++++++++++++++++++--
>  doc/guix.texi         |   2 +-
>  2 files changed, 108 insertions(+), 5 deletions(-)
>
> Hi,
>
> My proposal is to have Patch management using patman as a dedicated section.
> This way, we keep the submission guidelines simple using good ol'
> git-send-email.  And by being a dedicated section, it acts as the Perfect
> Setup: that's a tool very handy for doing the patch management task.
>
> WDYT?

Based on the other replies gathered so far, it seems there's little
excitement to learn yet another tool for patch management, so I think
I'll pursue the '--x-cmd' idea I already wrote about here, which would
allow integration directly with 'git send-email'.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-07 16:46   ` Maxim Cournoyer
@ 2023-03-07 17:39     ` Simon Tournier
  2023-03-08  5:29       ` Liliana Marie Prikler
  0 siblings, 1 reply; 43+ messages in thread
From: Simon Tournier @ 2023-03-07 17:39 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: ludo, liliana.prikler, 58813

Hi,

On Tue, 07 Mar 2023 at 11:46, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:

>> My proposal is to have Patch management using patman as a dedicated section.
>> This way, we keep the submission guidelines simple using good ol'
>> git-send-email.  And by being a dedicated section, it acts as the Perfect
>> Setup: that's a tool very handy for doing the patch management task.

> Based on the other replies gathered so far, it seems there's little
> excitement to learn yet another tool for patch management, so I think
> I'll pursue the '--x-cmd' idea I already wrote about here, which would
> allow integration directly with 'git send-email'.

Well, from my point of view, it is not exclusive. :-)

Let say I do not use the tools ’info’ and ’man’, but the manual has a
section dedicated to it [1].  Let say I am not excited by LaTex/TeX with
Guix, but the manual has a section dedicated to it [2].

And the “Perfect Setup” is about Emacs and links to Magit, other tools
that we could ask.  Maybe I am not excited by them.  Etc.

Anyway.

I still think this documentation for configuring ’patman’ about “Patch
management” is helpful.  I think it could be part of the manual.  If not
for reasons I am missing, at least this documentation should be included
in the Cookbook.

And from my point of view, if we say that [1,2] fits the manual, then
this dedicated section about “Patch management” also fits the manual.
If this dedicated section about “Patch management” also does not fit the
manual, then [1,2] neither. :-)

1: <https://guix.gnu.org/manual/devel/en/guix.html#Documentation>
2: <https://guix.gnu.org/manual/devel/en/guix.html#Using-TeX-and-LaTeX>

Cheers,
simon




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-07 17:39     ` Simon Tournier
@ 2023-03-08  5:29       ` Liliana Marie Prikler
  2023-03-08  8:47         ` Simon Tournier
  0 siblings, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-03-08  5:29 UTC (permalink / raw)
  To: Simon Tournier, Maxim Cournoyer; +Cc: ludo, 58813

Hi,

Am Dienstag, dem 07.03.2023 um 18:39 +0100 schrieb Simon Tournier:
> I still think this documentation for configuring ’patman’ about
> “Patch management” is helpful.  I think it could be part of the
> manual.  If not for reasons I am missing, at least this documentation
> should be included in the Cookbook.
There are two discussions here:
1. Should we "mandate" the use of patman?
2. Should we describe how to use patman for submitting patches to Guix?
I think most agree with the latter, but disagree with the former. 
Thus, whatever steps you add for the use with patman must be easily
enough replicated by people not using it, or else we risk low adoption
of best practices.

> And from my point of view, if we say that [1,2] fits the manual, then
> this dedicated section about “Patch management” also fits the manual.
> If this dedicated section about “Patch management” also does not fit
> the manual, then [1,2] neither. :-)
> 
> 1: <https://guix.gnu.org/manual/devel/en/guix.html#Documentation>
> 2:
> <https://guix.gnu.org/manual/devel/en/guix.html#Using-TeX-and-LaTeX>
I think [2] is distinct here in that it discusses Guix-specific quirks
when using TeX.

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-08  5:29       ` Liliana Marie Prikler
@ 2023-03-08  8:47         ` Simon Tournier
  2023-03-08 16:26           ` Maxim Cournoyer
  0 siblings, 1 reply; 43+ messages in thread
From: Simon Tournier @ 2023-03-08  8:47 UTC (permalink / raw)
  To: Liliana Marie Prikler, Maxim Cournoyer; +Cc: ludo, 58813

Hi Liliana,

On Wed, 08 Mar 2023 at 06:29, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
> Am Dienstag, dem 07.03.2023 um 18:39 +0100 schrieb Simon Tournier:

>> I still think this documentation for configuring ’patman’ about
>> “Patch management” is helpful.  I think it could be part of the
>> manual.  If not for reasons I am missing, at least this documentation
>> should be included in the Cookbook.
>
> There are two discussions here:
>
> 1. Should we "mandate" the use of patman?
> 2. Should we describe how to use patman for submitting patches to Guix?
>
> I think most agree with the latter, but disagree with the former. 
> Thus, whatever steps you add for the use with patman must be easily
> enough replicated by people not using it, or else we risk low adoption
> of best practices.

Well, I am not sure to understand “mandate”.  There is many tools that
appears in the Guix manual that are not “mandatory” but just
recommendations.  For instance, Emacs, emacs-geiser, emacs-debbugs, etc.
And even Git is not mandatory, maybe some people prefer Dulwich
(pure-Python implementation) or maybe others use ’gix’ (pure-Rust
implementation).  It would be fun to deal with Guix patches using gix. ;-)

So, I read “mandate” as recommend, hoping that I am not missing the
meaning you put behind the quoted mandate. :-)

About #1, I understand and I agree that the manual cannot recommend all
the tools on Earth and we have to make choices in order to keep it
clear, especially when newcomers is facing in the front of how to deal
with patches.

That’s why I also proposed to move this dedicated section about “Patch
management using patman” to the cookbook. :-)  It somehow answers #1 and
the item #2 is almost done.

Well, I do not have a strong opinion.  On a side note, because I am
lazy, if there is no pre-configuration that I can adapt, I will not try
patman.

Cheers,
simon




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-08  8:47         ` Simon Tournier
@ 2023-03-08 16:26           ` Maxim Cournoyer
  2023-03-08 17:05             ` Simon Tournier
  0 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-03-08 16:26 UTC (permalink / raw)
  To: Simon Tournier; +Cc: ludo, Liliana Marie Prikler, 58813

Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

> Hi Liliana,
>
> On Wed, 08 Mar 2023 at 06:29, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
>> Am Dienstag, dem 07.03.2023 um 18:39 +0100 schrieb Simon Tournier:
>
>>> I still think this documentation for configuring ’patman’ about
>>> “Patch management” is helpful.  I think it could be part of the
>>> manual.  If not for reasons I am missing, at least this documentation
>>> should be included in the Cookbook.
>>
>> There are two discussions here:
>>
>> 1. Should we "mandate" the use of patman?

I don't think this was ever in the discussion.  The patch series I sent
only hinted at a tool that can provide some further automation.  It's
not mandated (as in, required) at all.  git send-email works just fine
when manually pasting the output of 'etc/teams.scm cc-members
the.patch', and will continue to even if we mention the tool 'patman' in
conjunction.

[...]

> Well, I do not have a strong opinion.  On a side note, because I am
> lazy, if there is no pre-configuration that I can adapt, I will not try
> patman.

It's already there; see the .patman file at the root of the repo.
There's really not much to patman, it's a simple tool that does what it
does well (and already exists).

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission.
  2023-03-08 16:26           ` Maxim Cournoyer
@ 2023-03-08 17:05             ` Simon Tournier
  0 siblings, 0 replies; 43+ messages in thread
From: Simon Tournier @ 2023-03-08 17:05 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: ludo, Liliana Marie Prikler, 58813

Hi Maxim,

On Wed, 8 Mar 2023 at 17:26, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:

> > Well, I do not have a strong opinion.  On a side note, because I am
> > lazy, if there is no pre-configuration that I can adapt, I will not try
> > patman.
>
> It's already there; see the .patman file at the root of the repo.
> There's really not much to patman, it's a simple tool that does what it
> does well (and already exists).

Yeah not much, still (1) someone needs to be aware of this not much
and (2) I find a value with the (not much) example of usage.

Anyway.  I understand if there is no consensus for the manual, so if
you do not bother, I will adapt the patch for the Cookbook.

Cheers,
simon




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-03-07  1:07     ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
@ 2023-03-10  9:01       ` Ludovic Courtès
  2023-03-10 14:07         ` Maxim Cournoyer
  0 siblings, 1 reply; 43+ messages in thread
From: Ludovic Courtès @ 2023-03-10  9:01 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: liliana.prikler, 58813, zimon.toutoune

Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

> I've also discovered about '--cc-cmd', which could be used with the
> recently introduced get-maintainer mode (which was added for patman
> support); it can be used like this:
>
> git send-email --cc-cmd='etc/teams.scm get-maintainer' --dry-run -1

Nice!  But yeah, would be nicer if it could use X-Debbugs-Cc.

Perhaps we can still change the manual to recommend that followed by
“sed -i *.patch -es/^Cc/X-Debbugs-Cc/”?

Very low-tech but better than the status quo.  WDYT?

> For this reason, I'm toying with the idea of contributing a "--x-cmd"
> option to git send-email, which would be a script that outputs arbitrary
> git send-email options to add to its command line.

That’d be perfect!

Ludo’.




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH] doc: Document how to use Patman for patches submission.
  2023-03-10  9:01       ` Ludovic Courtès
@ 2023-03-10 14:07         ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
                             ` (5 more replies)
  0 siblings, 6 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-03-10 14:07 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: liliana.prikler, 58813, zimon.toutoune

Hi Ludo,

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> I've also discovered about '--cc-cmd', which could be used with the
>> recently introduced get-maintainer mode (which was added for patman
>> support); it can be used like this:
>>
>> git send-email --cc-cmd='etc/teams.scm get-maintainer' --dry-run -1
>
> Nice!  But yeah, would be nicer if it could use X-Debbugs-Cc.
>
> Perhaps we can still change the manual to recommend that followed by
> “sed -i *.patch -es/^Cc/X-Debbugs-Cc/”?
>
> Very low-tech but better than the status quo.  WDYT?
>
>> For this reason, I'm toying with the idea of contributing a "--x-cmd"
>> option to git send-email, which would be a script that outputs arbitrary
>> git send-email options to add to its command line.
>
> That’d be perfect!

Good, I haven't gotten any feedback from the #git folks, so I guess I'll
forge ahead and see what comments they have about the implementation.
It might be some time before I can hack on this.

To be continued!

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 0/5] Fix teams.scm by use of a new --header-cmd git send-email option.
  2023-03-10 14:07         ` Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
                             ` (4 subsequent siblings)
  5 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

Hello,

This adds a brand new '--header-cmd' option, to git send-email, which
can then be used to fix the issues reported against teams.scm in
https://issues.guix.gnu.org/58813.

The configuration of Git is also automated, which should make
everyone's life easier (and helps keeping the doc focused).

Thanks,

Maxim Cournoyer (5):
  gnu: git: Apply patch adding the --header-cmd feature.
  teams: Add 'cc-members-header-cmd' action.
  teams: Add a configure-git action.
  teams: Add a 'cc-mentors-header-cmd' action.
  doc: Simplify contributing section by automating git configuration.

 doc/contributing.texi                     | 102 +++++-------
 doc/guix.texi                             |   2 +-
 etc/git/gitconfig                         |  15 ++
 etc/teams.scm.in                          |  39 ++++-
 gnu/local.mk                              |   1 +
 gnu/packages/patches/git-header-cmd.patch | 180 ++++++++++++++++++++++
 gnu/packages/version-control.scm          |   3 +-
 7 files changed, 267 insertions(+), 75 deletions(-)
 create mode 100644 gnu/packages/patches/git-header-cmd.patch


base-commit: 5b545763ed9b8a3fade7f756d543819fc090953f
-- 
2.39.2





^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature.
  2023-03-10 14:07         ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  2023-04-23 17:00             ` Liliana Marie Prikler
  2023-04-23 16:04           ` bug#58813: [PATCH 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
                             ` (3 subsequent siblings)
  5 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

In preparation to fix <https://issues.guix.gnu.org/58813>.

* gnu/packages/patches/git-header-cmd.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/version-control.scm (git) [source]: Apply patch.
---
 gnu/local.mk                              |   1 +
 gnu/packages/patches/git-header-cmd.patch | 180 ++++++++++++++++++++++
 gnu/packages/version-control.scm          |   3 +-
 3 files changed, 183 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/git-header-cmd.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b631fa6d5a..d7c7ca48e7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1209,6 +1209,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gemmi-fix-sajson-types.patch		\
   %D%/packages/patches/genimage-mke2fs-test.patch		\
   %D%/packages/patches/geoclue-config.patch			\
+  %D%/packages/patches/git-header-cmd.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
   %D%/packages/patches/ghc-9.2-glibc-2.33-link-order.patch \
   %D%/packages/patches/ghc-testsuite-dlopen-pie.patch		\
diff --git a/gnu/packages/patches/git-header-cmd.patch b/gnu/packages/patches/git-header-cmd.patch
new file mode 100644
index 0000000000..fdd34fe4a4
--- /dev/null
+++ b/gnu/packages/patches/git-header-cmd.patch
@@ -0,0 +1,180 @@
+Add a '--header-cmd' to git send-email.
+
+Upstream status can be tracked at:
+https://lore.kernel.org/git/20230423122744.4865-1-maxim.cournoyer@gmail.com/T/#t
+
+diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
+index 51da7088a8..3d0f516520 100644
+--- a/Documentation/config/sendemail.txt
++++ b/Documentation/config/sendemail.txt
+@@ -58,6 +58,7 @@ sendemail.annotate::
+ sendemail.bcc::
+ sendemail.cc::
+ sendemail.ccCmd::
++sendemail.headerCmd::
+ sendemail.chainReplyTo::
+ sendemail.envelopeSender::
+ sendemail.from::
+diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
+index b0f438ec99..354c0d06db 100644
+--- a/Documentation/git-send-email.txt
++++ b/Documentation/git-send-email.txt
+@@ -320,6 +320,11 @@ Automating
+ 	Output of this command must be single email address per line.
+ 	Default is the value of `sendemail.ccCmd` configuration value.
+ 
++--header-cmd=<command>::
++	Specify a command to execute once per patch file which should
++	generate arbitrary, patch file specific header entries.
++	Default is the value of `sendemail.headerCmd` configuration value.
++
+ --[no-]chain-reply-to::
+ 	If this is set, each email will be sent as a reply to the previous
+ 	email sent.  If disabled with "--no-chain-reply-to", all emails after
+diff --git a/git-send-email.perl b/git-send-email.perl
+index fd8cd0d46f..676dd83d89 100755
+--- a/git-send-email.perl
++++ b/git-send-email.perl
+@@ -2,6 +2,7 @@
+ #
+ # Copyright 2002,2005 Greg Kroah-Hartman <greg@kroah.com>
+ # Copyright 2005 Ryan Anderson <ryan@michonline.com>
++# Copyright 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+ #
+ # GPL v2 (See COPYING)
+ #
+@@ -87,8 +88,9 @@ sub usage {
+ 
+   Automating:
+     --identity              <str>  * Use the sendemail.<id> options.
+-    --to-cmd                <str>  * Email To: via `<str> \$patch_path`
+-    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`
++    --to-cmd                <str>  * Email To: via `<str> \$patch_path`.
++    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`.
++    --header-cmd            <str>  * Add headers via `<str> \$patch_path`.
+     --suppress-cc           <str>  * author, self, sob, cc, cccmd, body, bodycc, misc-by, all.
+     --[no-]cc-cover                * Email Cc: addresses in the cover letter.
+     --[no-]to-cover                * Email To: addresses in the cover letter.
+@@ -269,7 +271,7 @@ sub do_edit {
+ # Variables with corresponding config settings
+ my ($suppress_from, $signed_off_by_cc);
+ my ($cover_cc, $cover_to);
+-my ($to_cmd, $cc_cmd);
++my ($to_cmd, $cc_cmd, $header_cmd);
+ my ($smtp_server, $smtp_server_port, @smtp_server_options);
+ my ($smtp_authuser, $smtp_encryption, $smtp_ssl_cert_path);
+ my ($batch_size, $relogin_delay);
+@@ -318,6 +320,7 @@ sub do_edit {
+     "tocmd" => \$to_cmd,
+     "cc" => \@config_cc,
+     "cccmd" => \$cc_cmd,
++    "headercmd" => \$header_cmd,
+     "aliasfiletype" => \$aliasfiletype,
+     "bcc" => \@config_bcc,
+     "suppresscc" => \@suppress_cc,
+@@ -519,6 +522,7 @@ sub config_regexp {
+ 		    "compose" => \$compose,
+ 		    "quiet" => \$quiet,
+ 		    "cc-cmd=s" => \$cc_cmd,
++		    "header-cmd=s" => \$header_cmd,
+ 		    "suppress-from!" => \$suppress_from,
+ 		    "no-suppress-from" => sub {$suppress_from = 0},
+ 		    "suppress-cc=s" => \@suppress_cc,
+@@ -1776,6 +1780,9 @@ sub process_file {
+ 			push(@header, $_);
+ 		}
+ 	}
++	# Add computed headers, if applicable.
++	push @header, execute_cmd("header-cmd", $header_cmd, $t)
++		if defined $header_cmd;
+ 	# Now parse the header
+ 	foreach(@header) {
+ 		if (/^From /) {
+@@ -2006,15 +2013,30 @@ sub process_file {
+ 	}
+ }
+ 
++# Execute a command (e.g., $x_cmd) and return its output lines as an
++# array.
++sub execute_cmd {
++	my ($prefix, $cmd, $file) = @_;
++	my @lines = ();
++	open my $fh, "-|", "$cmd \Q$file\E"
++		or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
++	while (my $line = <$fh>) {
++		last if $line =~ /^$/;
++		push @lines, $line;
++	}
++	close $fh
++	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
++	return @lines;
++}
++
+ # Execute a command (e.g. $to_cmd) to get a list of email addresses
+ # and return a results array
+ sub recipients_cmd {
+ 	my ($prefix, $what, $cmd, $file) = @_;
+-
++	my @lines = ();
+ 	my @addresses = ();
+-	open my $fh, "-|", "$cmd \Q$file\E"
+-	    or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
+-	while (my $address = <$fh>) {
++	@lines = execute_cmd($prefix, $cmd, $file);
++	for my $address (@lines) {
+ 		$address =~ s/^\s*//g;
+ 		$address =~ s/\s*$//g;
+ 		$address = sanitize_address($address);
+@@ -2023,8 +2045,6 @@ sub recipients_cmd {
+ 		printf(__("(%s) Adding %s: %s from: '%s'\n"),
+ 		       $prefix, $what, $address, $cmd) unless $quiet;
+ 		}
+-	close $fh
+-	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
+ 	return @addresses;
+ }
+ 
+diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
+index 0de83b5d2b..3393725107 100755
+--- a/t/t9001-send-email.sh
++++ b/t/t9001-send-email.sh
+@@ -374,13 +374,16 @@ test_expect_success $PREREQ,!AUTOIDENT 'broken implicit ident aborts send-email'
+ 	)
+ '
+ 
+-test_expect_success $PREREQ 'setup tocmd and cccmd scripts' '
++test_expect_success $PREREQ 'setup cmd scripts' '
+ 	write_script tocmd-sed <<-\EOF &&
+ 	sed -n -e "s/^tocmd--//p" "$1"
+ 	EOF
+-	write_script cccmd-sed <<-\EOF
++	write_script cccmd-sed <<-\EOF &&
+ 	sed -n -e "s/^cccmd--//p" "$1"
+ 	EOF
++	write_script headercmd-sed <<-\EOF
++	sed -n -e "s/^headercmd--//p" "$1"
++	EOF
+ '
+ 
+ test_expect_success $PREREQ 'tocmd works' '
+@@ -410,6 +413,20 @@ test_expect_success $PREREQ 'cccmd works' '
+ 	grep "^	cccmd@example.com" msgtxt1
+ '
+ 
++test_expect_success $PREREQ 'headercmd works' '
++	clean_fake_sendmail &&
++	cp $patches headercmd.patch &&
++	echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
++	git send-email \
++		--from="Example <nobody@example.com>" \
++		--to=nobody@example.com \
++		--header-cmd=./headercmd-sed \
++		--smtp-server="$(pwd)/fake.sendmail" \
++		headercmd.patch \
++		&&
++	grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
++'
++
+ test_expect_success $PREREQ 'reject long lines' '
+ 	z8=zzzzzzzz &&
+ 	z64=$z8$z8$z8$z8$z8$z8$z8$z8 &&
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 302f7c90ad..d5d88b99ed 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -232,7 +232,8 @@ (define-public git
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1mpjvhyw8mv2q941xny4d0gw3mb6b4bqaqbh73jd8b1v6zqpaps7"))))
+              "1mpjvhyw8mv2q941xny4d0gw3mb6b4bqaqbh73jd8b1v6zqpaps7"))
+            (patches (search-patches "git-header-cmd.patch"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 2/5] teams: Add 'cc-members-header-cmd' action.
  2023-03-10 14:07         ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 3/5] teams: Add a configure-git action Maxim Cournoyer
                             ` (2 subsequent siblings)
  5 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

* etc/teams.scm.in (patch->teams): New procedure.
(main): Use it.  Add a new "cc-members-header-cmd" command; document it.
---
 etc/teams.scm.in | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 37a3c8e191..408db8b7d5 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -5,7 +5,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -696,6 +696,12 @@ (define (git-patch->revisions file)
          (rev-start (string-append rev-end "^")))
     (list rev-start rev-end)))
 
+(define (patch->teams patch-file)
+  "Return the name of the teams in scope for the changes in PATCH-FILE."
+  (map (compose symbol->string team-id)
+       (find-team-by-scope (apply diff-revisions
+                                  (git-patch->revisions patch-file)))))
+
 \f
 (define (main . args)
   (match args
@@ -708,11 +714,13 @@ (define (main . args)
     (("cc-members" rev-start rev-end)
      (apply cc (find-team-by-scope
                 (diff-revisions rev-start rev-end))))
+    (("cc-members-header-cmd" patch-file)
+     (for-each (lambda (team-name)
+                 (list-members (find-team team-name) (current-output-port)
+                               "X-Debbugs-Cc: "))
+               (patch->teams patch-file)))
     (("get-maintainer" patch-file)
-     (apply main "list-members"
-            (map (compose symbol->string team-id)
-                 (find-team-by-scope (apply diff-revisions
-                                            (git-patch->revisions patch-file))))))
+     (apply main "list-members" (patch->teams patch-file)))
     (("list-teams" . args)
      (list-teams))
     (("list-members" . team-names)
@@ -729,6 +737,8 @@ (define (main . args)
       get git send-email flags for cc-ing <team-name>
   cc-members <start> <end> | patch
       cc teams related to files changed between revisions or in a patch file
+  cc-members-header-cmd <patch>
+      cc-members variant for use with 'git send-email --header-cmd'
   list-teams
       list teams and their members
   list-members <team-name>
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 3/5] teams: Add a configure-git action.
  2023-03-10 14:07         ` Maxim Cournoyer
                             ` (2 preceding siblings ...)
  2023-04-23 16:04           ` bug#58813: [PATCH 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  2023-04-23 17:03             ` Liliana Marie Prikler
  2023-04-23 16:04           ` bug#58813: [PATCH 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
  5 siblings, 1 reply; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

* etc/git/gitconfig: Augment configuration template with useful options to
allow for auto-configuration.
* etc/teams.scm.in (configure-git): New procedure.
(main): Register it and add documentation.
---
 etc/git/gitconfig | 15 +++++++++++++++
 etc/teams.scm.in  | 12 +++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/etc/git/gitconfig b/etc/git/gitconfig
index c9ebdc8fa8..0b6984a05f 100644
--- a/etc/git/gitconfig
+++ b/etc/git/gitconfig
@@ -1,5 +1,20 @@
+[commit]
+        gpgsign = true
+
 [diff "scheme"]
 	xfuncname = "^(\\(define.*)$"
 
 [diff "texinfo"]
 	xfuncname = "^@node[[:space:]]+([^,]+).*$"
+
+[format]
+        useAutoBase = true
+        thread = shallow
+
+[pull]
+        rebase = true
+
+[sendemail]
+        to = guix-patches@gnu.org
+        headerCmd = etc/teams.scm cc-members-header-cmd
+        thread = no
diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 408db8b7d5..8203446446 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -36,8 +36,9 @@
              (ice-9 regex)
              (ice-9 match)
              (ice-9 rdelim)
+             (git)
              (guix ui)
-             (git))
+             (guix build utils))
 
 (define-record-type <team>
   (make-team id name description members scope)
@@ -702,6 +703,11 @@ (define (patch->teams patch-file)
        (find-team-by-scope (apply diff-revisions
                                   (git-patch->revisions patch-file)))))
 
+(define (configure-git)
+  "Automate the required Git configurations for the Guix project."
+  (invoke "git" "config" "include.path" "../etc/git/gitconfig")
+  (copy-file "etc/git/pre-push" ".git/hooks/pre-push"))
+
 \f
 (define (main . args)
   (match args
@@ -719,6 +725,8 @@ (define (main . args)
                  (list-members (find-team team-name) (current-output-port)
                                "X-Debbugs-Cc: "))
                (patch->teams patch-file)))
+    (("configure-git")
+     (configure-git))
     (("get-maintainer" patch-file)
      (apply main "list-members" (patch->teams patch-file)))
     (("list-teams" . args)
@@ -739,6 +747,8 @@ (define (main . args)
       cc teams related to files changed between revisions or in a patch file
   cc-members-header-cmd <patch>
       cc-members variant for use with 'git send-email --header-cmd'
+  configure-git
+      automatically configure your Git checkout for Guix
   list-teams
       list teams and their members
   list-members <team-name>
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 4/5] teams: Add a 'cc-mentors-header-cmd' action.
  2023-03-10 14:07         ` Maxim Cournoyer
                             ` (3 preceding siblings ...)
  2023-04-23 16:04           ` bug#58813: [PATCH 3/5] teams: Add a configure-git action Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  2023-04-23 16:04           ` bug#58813: [PATCH 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
  5 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

* etc/teams.scm.in (main): Register a new "cc-mentors-header-cmd" action.
Document it.
---
 etc/teams.scm.in | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 8203446446..50ac7f043f 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -725,6 +725,9 @@ (define (main . args)
                  (list-members (find-team team-name) (current-output-port)
                                "X-Debbugs-Cc: "))
                (patch->teams patch-file)))
+    (("cc-mentors-header-cmd" patch-file)
+     (list-members (find-team "mentors") (current-output-port)
+                   "X-Debbugs-Cc: "))
     (("configure-git")
      (configure-git))
     (("get-maintainer" patch-file)
@@ -743,10 +746,12 @@ (define (main . args)
 Commands:
   cc <team-name>
       get git send-email flags for cc-ing <team-name>
-  cc-members <start> <end> | patch
+  cc-members <start> <end> | <patch>
       cc teams related to files changed between revisions or in a patch file
   cc-members-header-cmd <patch>
       cc-members variant for use with 'git send-email --header-cmd'
+  cc-mentors-header-cmd <patch>
+      command to use with 'git send-email --header-cmd' to notify mentors
   configure-git
       automatically configure your git for Guix
   list-teams
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 5/5] doc: Simplify contributing section by automating git configuration.
  2023-03-10 14:07         ` Maxim Cournoyer
                             ` (4 preceding siblings ...)
  2023-04-23 16:04           ` bug#58813: [PATCH 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
@ 2023-04-23 16:04           ` Maxim Cournoyer
  5 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-23 16:04 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

Fixes <https://issues.guix.gnu.org/58813>.  Instead of documenting all the
fine details of Git configuration, invite users to configure their checkout
with 'etc/teams configure-git'.  No longer suggests to splice the output of
etc/teams.scm commands into the 'git send-email' command line; this is now
transparently handled by the Git configuration.

* doc/contributing.texi (Configuring Git): Move configuration setup to
'etc/teams.scm configure-git'.
(Sending a Patch Series): Do not specify options configured as default by the
above.  Prefer long option names, for explicitness.
(Teams): Rewrite the examples to use --header-cmd.
(Commit Access): Refer to the Configuring Git section instead of detailing
manual steps.
---
 doc/contributing.texi | 102 +++++++++++++++---------------------------
 doc/guix.texi         |   2 +-
 2 files changed, 37 insertions(+), 67 deletions(-)

diff --git a/doc/contributing.texi b/doc/contributing.texi
index 73d1cd2648..fb72238487 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1395,27 +1395,11 @@ Configuring Git
 use @command{git config --local}, or edit @file{.git/config} in the
 repository instead of @file{~/.gitconfig}.
 
-We provide some default settings in @file{etc/git/gitconfig} which
-modify how patches are generated, making them easier to read and apply.
-These settings can be applied by manually copying them to
-@file{.git/config} in your checkout, or by telling Git to include the
-whole file:
+To configure automatically your local Git checkout to use the
+recommended settings and hooks, run the following command once:
 
 @example
-git config --local include.path ../etc/git/gitconfig
-@end example
-
-From then on, any changes to @file{etc/git/gitconfig} would
-automatically take effect.
-
-Since the first patch in a series must be sent separately
-(@pxref{Sending a Patch Series}), it can also be helpful to tell
-@command{git format-patch} to handle the e-mail threading instead of
-@command{git send-email}:
-
-@example
-git config --local format.thread shallow
-git config --local sendemail.thread no
+etc/teams.scm configure-git
 @end example
 
 @node Sending a Patch Series
@@ -1439,10 +1423,12 @@ Sending a Patch Series
 
 The following command will create a patch email from the latest commit,
 open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
-the Guix mailing list to be reviewed and merged:
+the Guix mailing list to be reviewed and merged.  Assuming you have
+already configured Git according to @xref{Configuring Git}, you can
+simply use:
 
 @example
-$ git send-email -1 -a --base=auto --to=guix-patches@@gnu.org
+$ git send-email --annotate -1
 @end example
 
 @quotation Tip
@@ -1453,31 +1439,26 @@ Sending a Patch Series
 @url{https://git.savannah.gnu.org/cgit/guix.git}.
 
 @example
-git send-email -1 -a --base=auto \
-    --subject-prefix='PATCH core-updates' \
-    --to=guix-patches@@gnu.org
+git send-email --annotate --subject-prefix='PATCH core-updates' -1
 @end example
 @end quotation
 
 The patch email contains a three-dash separator line after the commit
 message.  You may ``annotate'' the patch with explanatory text by adding
 it under this line.  If you do not wish to annotate the email, you may
-drop the @option{-a} flag (which is short for @option{--annotate}).
-
-The @option{--base=auto} flag automatically adds a note at the bottom
-of the patch of the commit it was based on, making it easier for
-maintainers to rebase and merge your patch.
+drop the @option{--annotate} option.
 
 If you need to send a revised patch, don't resend it like this or send
 a ``fix'' patch to be applied on top of the last one; instead, use
-@command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}}
-to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org}
-address and the @option{-v} flag with @command{git send-email}.
+@command{git commit --amend} or @url{https://git-rebase.io,
+@command{git rebase}} to modify the commit, and use the
+@email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v}
+flag with @command{git send-email}.
 
 @example
-$ git commit -a
-$ git send-email -1 -a --base=auto -v@var{REVISION} \
-      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
+$ git commit --amend
+$ git send-email --annotate -v@var{REVISION} \
+      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -1
 @end example
 
 @quotation Note
@@ -1494,14 +1475,14 @@ Sending a Patch Series
 @unnumberedsubsubsec Notifying Teams
 @anchor{Notifying Teams}
 @cindex teams
-The @file{etc/teams.scm} script may be used to notify all those who
-may be interested in your patch of its existence (@pxref{Teams}).
-Use @command{etc/teams.scm list-teams} to display all the teams,
-decide which team(s) your patch relates to, and use
-@command{etc/teams.scm cc} to output various @command{git send-email}
-flags which will notify the appropriate team members, or use
-@command{etc/teams.scm cc-members} to detect the appropriate teams
-automatically.
+If your git checkout has been correctly configured (@pxref{Configuring
+Git}), the @command{git send-email} command will automatically notify
+the appropriate team members, based on the scope of your changes.  This
+relies on the @file{etc/teams.scm} script, which can also be invoked
+manually if you do not use the preferred @command{git send-email}
+command to submit patches.  To list the available actions of the script,
+you can invoke it via the @command{etc/teams.scm help} command.  For
+more information regarding teams, see @xref{Teams}.
 
 @unnumberedsubsubsec Multiple Patches
 @anchor{Multiple Patches}
@@ -1528,9 +1509,7 @@ Sending a Patch Series
 that we can send the rest of the patches to.
 
 @example
-$ git send-email outgoing/0000-cover-letter.patch -a \
-      --to=guix-patches@@gnu.org \
-      $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/0000-cover-letter.patch --annotate
 $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
 @end example
 
@@ -1542,9 +1521,7 @@ Sending a Patch Series
 can send the actual patches to the newly-created issue address.
 
 @example
-$ git send-email outgoing/*.patch \
-      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
-      $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/*.patch --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
 $ rm -rf outgoing # we don't need these anymore
 @end example
 
@@ -1553,14 +1530,13 @@ Sending a Patch Series
 the patchset.
 
 @example
-$ git send-email -@var{NUMBER_COMMITS} \
-      -v@var{REVISION} --base=auto \
+$ git send-email -@var{NUMBER_COMMITS} -v@var{REVISION} \
       --to @var{ISSUE_NUMBER}@@debbugs.gnu.org
 @end example
 
-If need be, you may use @option{--cover-letter -a} to send another cover
-letter, e.g. for explaining what's changed since the last revision, and
-these changes are necessary.
+If need be, you may use @option{--cover-letter --annotate} to send
+another cover letter, e.g. for explaining what's changed since the last
+revision, and these changes are necessary.
 
 @node Teams
 @subsection Teams
@@ -1587,7 +1563,8 @@ Teams
 CC of a patch series:
 
 @example
-$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
+$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org \
+  --header-cmd='etc/teams.scm cc-mentors-header-cmd' *.patch
 @end example
 
 The appropriate team or teams can also be inferred from the modified
@@ -1596,7 +1573,7 @@ Teams
 
 @example
 $ guix shell -D guix
-[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
+[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org -2
 @end example
 
 @node Tracking Bugs and Patches
@@ -1831,16 +1808,9 @@ Commit Access
 make authenticate
 @end example
 
-You can prevent yourself from accidentally pushing unsigned or signed
-with the wrong key commits to Savannah by using the pre-push Git hook
-located at @file{etc/git/pre-push}:
-
-@example
-cp etc/git/pre-push .git/hooks/pre-push
-@end example
-
-It additionally calls @code{make check-channel-news} to be sure
-@file{news.scm} file is correct.
+To avoid accidentally pushing unsigned or signed with the wrong key
+commits to Savannah, make sure to configure Git according to
+@xref{Configuring Git}.
 
 @subsection Commit Policy
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 9997aeb86e..e5f6c7e831 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -49,7 +49,7 @@
 Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@*
 Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@*
 Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@*
-Copyright @copyright{} 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer@*
 Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature.
  2023-04-23 16:04           ` bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
@ 2023-04-23 17:00             ` Liliana Marie Prikler
  2023-04-24  0:46               ` Maxim Cournoyer
  0 siblings, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-04-23 17:00 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813; +Cc: ludo, zimon.toutoune

Am Sonntag, dem 23.04.2023 um 12:04 -0400 schrieb Maxim Cournoyer:
> In preparation to fix <https://issues.guix.gnu.org/58813>.
> 
> * gnu/packages/patches/git-header-cmd.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Register it.
> * gnu/packages/version-control.scm (git) [source]: Apply patch.
> ---
Don't forget to also send this patch to git proper.  I'm sure that
other distros will have a use for it.

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 3/5] teams: Add a configure-git action.
  2023-04-23 16:04           ` bug#58813: [PATCH 3/5] teams: Add a configure-git action Maxim Cournoyer
@ 2023-04-23 17:03             ` Liliana Marie Prikler
  2023-04-24  0:59               ` Maxim Cournoyer
                                 ` (6 more replies)
  0 siblings, 7 replies; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-04-23 17:03 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813; +Cc: ludo, zimon.toutoune

Am Sonntag, dem 23.04.2023 um 12:04 -0400 schrieb Maxim Cournoyer:
> * etc/git/gitconfig: Augment configuration template with useful
> options to
> allow for auto-configuration.
> * etc/teams.scm.in (configure-git): New procedure.
> (main): Register it and add documentation.
I think configure-git is somewhat out of scope inside teams.scm.  We do
already tell people to set up their push hooks, so we probably ought to
solve this via documentation (or a separate dedicated script) as well.

Otherwise LGTM.

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature.
  2023-04-23 17:00             ` Liliana Marie Prikler
@ 2023-04-24  0:46               ` Maxim Cournoyer
  0 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  0:46 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: ludo, 58813, zimon.toutoune

Hi Liliana,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Sonntag, dem 23.04.2023 um 12:04 -0400 schrieb Maxim Cournoyer:
>> In preparation to fix <https://issues.guix.gnu.org/58813>.
>> 
>> * gnu/packages/patches/git-header-cmd.patch: New file.
>> * gnu/local.mk (dist_patch_DATA): Register it.
>> * gnu/packages/version-control.scm (git) [source]: Apply patch.
>> ---
> Don't forget to also send this patch to git proper.  I'm sure that
> other distros will have a use for it.

Already the case (see the top comment in the patch itself) :-).

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH 3/5] teams: Add a configure-git action.
  2023-04-23 17:03             ` Liliana Marie Prikler
@ 2023-04-24  0:59               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
                                 ` (5 subsequent siblings)
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  0:59 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: ludo, 58813, zimon.toutoune

Hi Liliana,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Sonntag, dem 23.04.2023 um 12:04 -0400 schrieb Maxim Cournoyer:
>> * etc/git/gitconfig: Augment configuration template with useful
>> options to
>> allow for auto-configuration.
>> * etc/teams.scm.in (configure-git): New procedure.
>> (main): Register it and add documentation.
> I think configure-git is somewhat out of scope inside teams.scm.  We do
> already tell people to set up their push hooks, so we probably ought to
> solve this via documentation (or a separate dedicated script) as well.

You're right that it feels a bit out of place.  The other idea I had was
to add it as a Makefile target.  This one would have the benefit of
being smart about when to re-run the command (if the gitconfig or
pre-push files changed).

Would that fit better?

> Otherwise LGTM.

OK!  Thanks for weighing in.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 0/5] Fix teams.scm by use of a new --header-cmd git send-email option.
  2023-04-23 17:03             ` Liliana Marie Prikler
  2023-04-24  0:59               ` Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
                                 ` (4 subsequent siblings)
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

This v2 moves the Git autoconfiguration from teams.scm to to the build
system (Automake).  This has the benefit of happening on every build
when necessary, further automating things and avoiding the need to
remember to refresh the pre-push hooks at times.  The rest is mostly
unchanged except for light adjustments to the doc commit.

Thanks!

Maxim Cournoyer (5):
  gnu: git: Apply patch adding the --header-cmd feature.
  teams: Add 'cc-members-header-cmd' action.
  Makefile.am: Auto-configure Git on 'make'.
  teams: Add a 'cc-mentors-header-cmd' action.
  doc: Simplify contributing section by automating git configuration.

 Makefile.am                               |  10 ++
 doc/contributing.texi                     | 104 +++++--------
 doc/guix.texi                             |   2 +-
 etc/git/gitconfig                         |  15 ++
 etc/teams.scm.in                          |  27 +++-
 gnu/local.mk                              |   1 +
 gnu/packages/patches/git-header-cmd.patch | 180 ++++++++++++++++++++++
 gnu/packages/version-control.scm          |   3 +-
 8 files changed, 265 insertions(+), 77 deletions(-)
 create mode 100644 gnu/packages/patches/git-header-cmd.patch


base-commit: 5b545763ed9b8a3fade7f756d543819fc090953f
-- 
2.39.2





^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 1/5] gnu: git: Apply patch adding the --header-cmd feature.
  2023-04-23 17:03             ` Liliana Marie Prikler
  2023-04-24  0:59               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
                                 ` (3 subsequent siblings)
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

In preparation to fix <https://issues.guix.gnu.org/58813>.

* gnu/packages/patches/git-header-cmd.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/version-control.scm (git) [source]: Apply patch.
---
 gnu/local.mk                              |   1 +
 gnu/packages/patches/git-header-cmd.patch | 180 ++++++++++++++++++++++
 gnu/packages/version-control.scm          |   3 +-
 3 files changed, 183 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/git-header-cmd.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b631fa6d5a..d7c7ca48e7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1209,6 +1209,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gemmi-fix-sajson-types.patch		\
   %D%/packages/patches/genimage-mke2fs-test.patch		\
   %D%/packages/patches/geoclue-config.patch			\
+  %D%/packages/patches/git-header-cmd.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
   %D%/packages/patches/ghc-9.2-glibc-2.33-link-order.patch \
   %D%/packages/patches/ghc-testsuite-dlopen-pie.patch		\
diff --git a/gnu/packages/patches/git-header-cmd.patch b/gnu/packages/patches/git-header-cmd.patch
new file mode 100644
index 0000000000..fdd34fe4a4
--- /dev/null
+++ b/gnu/packages/patches/git-header-cmd.patch
@@ -0,0 +1,180 @@
+Add a '--header-cmd' to git send-email.
+
+Upstream status can be tracked at:
+https://lore.kernel.org/git/20230423122744.4865-1-maxim.cournoyer@gmail.com/T/#t
+
+diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
+index 51da7088a8..3d0f516520 100644
+--- a/Documentation/config/sendemail.txt
++++ b/Documentation/config/sendemail.txt
+@@ -58,6 +58,7 @@ sendemail.annotate::
+ sendemail.bcc::
+ sendemail.cc::
+ sendemail.ccCmd::
++sendemail.headerCmd::
+ sendemail.chainReplyTo::
+ sendemail.envelopeSender::
+ sendemail.from::
+diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
+index b0f438ec99..354c0d06db 100644
+--- a/Documentation/git-send-email.txt
++++ b/Documentation/git-send-email.txt
+@@ -320,6 +320,11 @@ Automating
+ 	Output of this command must be single email address per line.
+ 	Default is the value of `sendemail.ccCmd` configuration value.
+ 
++--header-cmd=<command>::
++	Specify a command to execute once per patch file which should
++	generate arbitrary, patch file specific header entries.
++	Default is the value of `sendemail.headerCmd` configuration value.
++
+ --[no-]chain-reply-to::
+ 	If this is set, each email will be sent as a reply to the previous
+ 	email sent.  If disabled with "--no-chain-reply-to", all emails after
+diff --git a/git-send-email.perl b/git-send-email.perl
+index fd8cd0d46f..676dd83d89 100755
+--- a/git-send-email.perl
++++ b/git-send-email.perl
+@@ -2,6 +2,7 @@
+ #
+ # Copyright 2002,2005 Greg Kroah-Hartman <greg@kroah.com>
+ # Copyright 2005 Ryan Anderson <ryan@michonline.com>
++# Copyright 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+ #
+ # GPL v2 (See COPYING)
+ #
+@@ -87,8 +88,9 @@ sub usage {
+ 
+   Automating:
+     --identity              <str>  * Use the sendemail.<id> options.
+-    --to-cmd                <str>  * Email To: via `<str> \$patch_path`
+-    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`
++    --to-cmd                <str>  * Email To: via `<str> \$patch_path`.
++    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`.
++    --header-cmd            <str>  * Add headers via `<str> \$patch_path`.
+     --suppress-cc           <str>  * author, self, sob, cc, cccmd, body, bodycc, misc-by, all.
+     --[no-]cc-cover                * Email Cc: addresses in the cover letter.
+     --[no-]to-cover                * Email To: addresses in the cover letter.
+@@ -269,7 +271,7 @@ sub do_edit {
+ # Variables with corresponding config settings
+ my ($suppress_from, $signed_off_by_cc);
+ my ($cover_cc, $cover_to);
+-my ($to_cmd, $cc_cmd);
++my ($to_cmd, $cc_cmd, $header_cmd);
+ my ($smtp_server, $smtp_server_port, @smtp_server_options);
+ my ($smtp_authuser, $smtp_encryption, $smtp_ssl_cert_path);
+ my ($batch_size, $relogin_delay);
+@@ -318,6 +320,7 @@ sub do_edit {
+     "tocmd" => \$to_cmd,
+     "cc" => \@config_cc,
+     "cccmd" => \$cc_cmd,
++    "headercmd" => \$header_cmd,
+     "aliasfiletype" => \$aliasfiletype,
+     "bcc" => \@config_bcc,
+     "suppresscc" => \@suppress_cc,
+@@ -519,6 +522,7 @@ sub config_regexp {
+ 		    "compose" => \$compose,
+ 		    "quiet" => \$quiet,
+ 		    "cc-cmd=s" => \$cc_cmd,
++		    "header-cmd=s" => \$header_cmd,
+ 		    "suppress-from!" => \$suppress_from,
+ 		    "no-suppress-from" => sub {$suppress_from = 0},
+ 		    "suppress-cc=s" => \@suppress_cc,
+@@ -1776,6 +1780,9 @@ sub process_file {
+ 			push(@header, $_);
+ 		}
+ 	}
++	# Add computed headers, if applicable.
++	push @header, execute_cmd("header-cmd", $header_cmd, $t)
++		if defined $header_cmd;
+ 	# Now parse the header
+ 	foreach(@header) {
+ 		if (/^From /) {
+@@ -2006,15 +2013,30 @@ sub process_file {
+ 	}
+ }
+ 
++# Execute a command (e.g., $x_cmd) and return its output lines as an
++# array.
++sub execute_cmd {
++	my ($prefix, $cmd, $file) = @_;
++	my @lines = ();
++	open my $fh, "-|", "$cmd \Q$file\E"
++		or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
++	while (my $line = <$fh>) {
++		last if $line =~ /^$/;
++		push @lines, $line;
++	}
++	close $fh
++	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
++	return @lines;
++}
++
+ # Execute a command (e.g. $to_cmd) to get a list of email addresses
+ # and return a results array
+ sub recipients_cmd {
+ 	my ($prefix, $what, $cmd, $file) = @_;
+-
++	my @lines = ();
+ 	my @addresses = ();
+-	open my $fh, "-|", "$cmd \Q$file\E"
+-	    or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
+-	while (my $address = <$fh>) {
++	@lines = execute_cmd($prefix, $cmd, $file);
++	for my $address (@lines) {
+ 		$address =~ s/^\s*//g;
+ 		$address =~ s/\s*$//g;
+ 		$address = sanitize_address($address);
+@@ -2023,8 +2045,6 @@ sub recipients_cmd {
+ 		printf(__("(%s) Adding %s: %s from: '%s'\n"),
+ 		       $prefix, $what, $address, $cmd) unless $quiet;
+ 		}
+-	close $fh
+-	    or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
+ 	return @addresses;
+ }
+ 
+diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
+index 0de83b5d2b..3393725107 100755
+--- a/t/t9001-send-email.sh
++++ b/t/t9001-send-email.sh
+@@ -374,13 +374,16 @@ test_expect_success $PREREQ,!AUTOIDENT 'broken implicit ident aborts send-email'
+ 	)
+ '
+ 
+-test_expect_success $PREREQ 'setup tocmd and cccmd scripts' '
++test_expect_success $PREREQ 'setup cmd scripts' '
+ 	write_script tocmd-sed <<-\EOF &&
+ 	sed -n -e "s/^tocmd--//p" "$1"
+ 	EOF
+-	write_script cccmd-sed <<-\EOF
++	write_script cccmd-sed <<-\EOF &&
+ 	sed -n -e "s/^cccmd--//p" "$1"
+ 	EOF
++	write_script headercmd-sed <<-\EOF
++	sed -n -e "s/^headercmd--//p" "$1"
++	EOF
+ '
+ 
+ test_expect_success $PREREQ 'tocmd works' '
+@@ -410,6 +413,20 @@ test_expect_success $PREREQ 'cccmd works' '
+ 	grep "^	cccmd@example.com" msgtxt1
+ '
+ 
++test_expect_success $PREREQ 'headercmd works' '
++	clean_fake_sendmail &&
++	cp $patches headercmd.patch &&
++	echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
++	git send-email \
++		--from="Example <nobody@example.com>" \
++		--to=nobody@example.com \
++		--header-cmd=./headercmd-sed \
++		--smtp-server="$(pwd)/fake.sendmail" \
++		headercmd.patch \
++		&&
++	grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
++'
++
+ test_expect_success $PREREQ 'reject long lines' '
+ 	z8=zzzzzzzz &&
+ 	z64=$z8$z8$z8$z8$z8$z8$z8$z8 &&
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 302f7c90ad..d5d88b99ed 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -232,7 +232,8 @@ (define-public git
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1mpjvhyw8mv2q941xny4d0gw3mb6b4bqaqbh73jd8b1v6zqpaps7"))))
+              "1mpjvhyw8mv2q941xny4d0gw3mb6b4bqaqbh73jd8b1v6zqpaps7"))
+            (patches (search-patches "git-header-cmd.patch"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 2/5] teams: Add 'cc-members-header-cmd' action.
  2023-04-23 17:03             ` Liliana Marie Prikler
                                 ` (2 preceding siblings ...)
  2023-04-24  2:29               ` bug#58813: [PATCH v2 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make' Maxim Cournoyer
                                 ` (2 subsequent siblings)
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

* etc/teams.scm.in (patch->teams): New procedure.
(main): Use it.  Add a new "cc-members-header-cmd" command; document it.
---
 etc/teams.scm.in | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 37a3c8e191..408db8b7d5 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -5,7 +5,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -696,6 +696,12 @@ (define (git-patch->revisions file)
          (rev-start (string-append rev-end "^")))
     (list rev-start rev-end)))
 
+(define (patch->teams patch-file)
+  "Return the name of the teams in scope for the changes in PATCH-FILE."
+  (map (compose symbol->string team-id)
+       (find-team-by-scope (apply diff-revisions
+                                  (git-patch->revisions patch-file)))))
+
 \f
 (define (main . args)
   (match args
@@ -708,11 +714,13 @@ (define (main . args)
     (("cc-members" rev-start rev-end)
      (apply cc (find-team-by-scope
                 (diff-revisions rev-start rev-end))))
+    (("cc-members-header-cmd" patch-file)
+     (for-each (lambda (team-name)
+                 (list-members (find-team team-name) (current-output-port)
+                               "X-Debbugs-Cc: "))
+               (patch->teams patch-file)))
     (("get-maintainer" patch-file)
-     (apply main "list-members"
-            (map (compose symbol->string team-id)
-                 (find-team-by-scope (apply diff-revisions
-                                            (git-patch->revisions patch-file))))))
+     (apply main "list-members" (patch->teams patch-file)))
     (("list-teams" . args)
      (list-teams))
     (("list-members" . team-names)
@@ -729,6 +737,8 @@ (define (main . args)
       get git send-email flags for cc-ing <team-name>
   cc-members <start> <end> | patch
       cc teams related to files changed between revisions or in a patch file
+  cc-members-header-cmd <patch>
+      cc-members variant for use with 'git send-email --header-cmd'
   list-teams
       list teams and their members
   list-members <team-name>
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make'.
  2023-04-23 17:03             ` Liliana Marie Prikler
                                 ` (3 preceding siblings ...)
  2023-04-24  2:29               ` bug#58813: [PATCH v2 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  2023-04-24  4:22                 ` Liliana Marie Prikler
  2023-04-28 14:28                 ` Josselin Poiret via Bug reports for GNU Guix
  2023-04-24  2:29               ` bug#58813: [PATCH v2 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
  6 siblings, 2 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

This means we do not need to worry anymore about manually syncing the pre-push
git hook or the Guix-provided git configuration.

* etc/git/gitconfig: Augment configuration template with useful options to
allow for auto-configuration.
* Makefile.am (.git/hooks/pre-push, .git/config): New targets.
(nodist_noinst_DATA): New primary variable holding the above targets.
---
 Makefile.am       | 10 ++++++++++
 etc/git/gitconfig | 15 +++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index 23b939b674..7daa7d66f7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,6 +14,7 @@
 # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 # Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+# Copyright © 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
 # Copyright © 2021 Andrew Tropin <andrew@trop.in>
 #
@@ -1109,6 +1110,15 @@ cuirass-jobs: $(GOBJECTS)
 .PHONY: clean-go make-go as-derivation authenticate
 .PHONY: update-guix-package update-NEWS cuirass-jobs release
 
+# Git auto-configuration.
+.git/hooks/pre-push: etc/git/pre-push
+	cp etc/git/pre-push .git/hooks/pre-push
+
+.git/config: etc/git/gitconfig
+	git config include.path ../etc/git/gitconfig
+
+nodist_noinst_DATA = .git/hooks/pre-push .git/config
+
 # Downloading up-to-date PO files.
 
 WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
diff --git a/etc/git/gitconfig b/etc/git/gitconfig
index c9ebdc8fa8..0b6984a05f 100644
--- a/etc/git/gitconfig
+++ b/etc/git/gitconfig
@@ -1,5 +1,20 @@
+[commit]
+        gpgsign = true
+
 [diff "scheme"]
 	xfuncname = "^(\\(define.*)$"
 
 [diff "texinfo"]
 	xfuncname = "^@node[[:space:]]+([^,]+).*$"
+
+[format]
+        useAutoBase = true
+        thread = shallow
+
+[pull]
+        rebase = true
+
+[sendemail]
+        to = guix-patches@gnu.org
+        headerCmd = etc/teams.scm cc-members-header-cmd
+        thread = no
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 4/5] teams: Add a 'cc-mentors-header-cmd' action.
  2023-04-23 17:03             ` Liliana Marie Prikler
                                 ` (4 preceding siblings ...)
  2023-04-24  2:29               ` bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make' Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  2023-04-24  2:29               ` bug#58813: [PATCH v2 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

* etc/teams.scm.in (main): Register a new "cc-mentors-header-cmd" action.
Document it.
---
 etc/teams.scm.in | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 408db8b7d5..dec175f630 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -719,6 +719,9 @@ (define (main . args)
                  (list-members (find-team team-name) (current-output-port)
                                "X-Debbugs-Cc: "))
                (patch->teams patch-file)))
+    (("cc-mentors-header-cmd" patch-file)
+     (list-members (find-team "mentors") (current-output-port)
+                   "X-Debbugs-Cc: "))
     (("get-maintainer" patch-file)
      (apply main "list-members" (patch->teams patch-file)))
     (("list-teams" . args)
@@ -735,10 +738,12 @@ (define (main . args)
 Commands:
   cc <team-name>
       get git send-email flags for cc-ing <team-name>
-  cc-members <start> <end> | patch
+  cc-members <start> <end> | <patch>
       cc teams related to files changed between revisions or in a patch file
   cc-members-header-cmd <patch>
       cc-members variant for use with 'git send-email --header-cmd'
+  cc-mentors-header-cmd <patch>
+      command to use with 'git send-email --header-cmd' to notify mentors
   list-teams
       list teams and their members
   list-members <team-name>
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 5/5] doc: Simplify contributing section by automating git configuration.
  2023-04-23 17:03             ` Liliana Marie Prikler
                                 ` (5 preceding siblings ...)
  2023-04-24  2:29               ` bug#58813: [PATCH v2 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
@ 2023-04-24  2:29               ` Maxim Cournoyer
  6 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24  2:29 UTC (permalink / raw)
  To: 58813; +Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

Fixes <https://issues.guix.gnu.org/58813>. No longer suggests to
splice the output of etc/teams.scm commands into the 'git send-email'
command line; this is now transparently handled by the Git
configuration, which is also automatic.

* doc/contributing.texi (Configuring Git): Streamline section, now automated
via Automake.
(Sending a Patch Series): Do not specify options configured as default by the
above.  Prefer long option names, for readability.
(Teams): Rewrite the examples to use --header-cmd.
(Commit Access): Refer to the Configuring Git section instead of detailing
manual steps.
---
 doc/contributing.texi | 104 ++++++++++++++----------------------------
 doc/guix.texi         |   2 +-
 2 files changed, 36 insertions(+), 70 deletions(-)

diff --git a/doc/contributing.texi b/doc/contributing.texi
index 73d1cd2648..b13531c5cc 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1395,28 +1395,8 @@ Configuring Git
 use @command{git config --local}, or edit @file{.git/config} in the
 repository instead of @file{~/.gitconfig}.
 
-We provide some default settings in @file{etc/git/gitconfig} which
-modify how patches are generated, making them easier to read and apply.
-These settings can be applied by manually copying them to
-@file{.git/config} in your checkout, or by telling Git to include the
-whole file:
-
-@example
-git config --local include.path ../etc/git/gitconfig
-@end example
-
-From then on, any changes to @file{etc/git/gitconfig} would
-automatically take effect.
-
-Since the first patch in a series must be sent separately
-(@pxref{Sending a Patch Series}), it can also be helpful to tell
-@command{git format-patch} to handle the e-mail threading instead of
-@command{git send-email}:
-
-@example
-git config --local format.thread shallow
-git config --local sendemail.thread no
-@end example
+Other important Git configuration will automatically be configured when
+building the project (@pxref{Building from Git}).
 
 @node Sending a Patch Series
 @subsection Sending a Patch Series
@@ -1439,10 +1419,12 @@ Sending a Patch Series
 
 The following command will create a patch email from the latest commit,
 open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
-the Guix mailing list to be reviewed and merged:
+the Guix mailing list to be reviewed and merged.  Assuming you have
+already configured Git according to @xref{Configuring Git}, you can
+simply use:
 
 @example
-$ git send-email -1 -a --base=auto --to=guix-patches@@gnu.org
+$ git send-email --annotate -1
 @end example
 
 @quotation Tip
@@ -1453,31 +1435,26 @@ Sending a Patch Series
 @url{https://git.savannah.gnu.org/cgit/guix.git}.
 
 @example
-git send-email -1 -a --base=auto \
-    --subject-prefix='PATCH core-updates' \
-    --to=guix-patches@@gnu.org
+git send-email --annotate --subject-prefix='PATCH core-updates' -1
 @end example
 @end quotation
 
 The patch email contains a three-dash separator line after the commit
 message.  You may ``annotate'' the patch with explanatory text by adding
 it under this line.  If you do not wish to annotate the email, you may
-drop the @option{-a} flag (which is short for @option{--annotate}).
-
-The @option{--base=auto} flag automatically adds a note at the bottom
-of the patch of the commit it was based on, making it easier for
-maintainers to rebase and merge your patch.
+drop the @option{--annotate} option.
 
 If you need to send a revised patch, don't resend it like this or send
 a ``fix'' patch to be applied on top of the last one; instead, use
-@command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}}
-to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org}
-address and the @option{-v} flag with @command{git send-email}.
+@command{git commit --amend} or @url{https://git-rebase.io,
+@command{git rebase}} to modify the commit, and use the
+@email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v}
+flag with @command{git send-email}.
 
 @example
-$ git commit -a
-$ git send-email -1 -a --base=auto -v@var{REVISION} \
-      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
+$ git commit --amend
+$ git send-email --annotate -v@var{REVISION} \
+      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -1
 @end example
 
 @quotation Note
@@ -1494,14 +1471,14 @@ Sending a Patch Series
 @unnumberedsubsubsec Notifying Teams
 @anchor{Notifying Teams}
 @cindex teams
-The @file{etc/teams.scm} script may be used to notify all those who
-may be interested in your patch of its existence (@pxref{Teams}).
-Use @command{etc/teams.scm list-teams} to display all the teams,
-decide which team(s) your patch relates to, and use
-@command{etc/teams.scm cc} to output various @command{git send-email}
-flags which will notify the appropriate team members, or use
-@command{etc/teams.scm cc-members} to detect the appropriate teams
-automatically.
+If your git checkout has been correctly configured (@pxref{Configuring
+Git}), the @command{git send-email} command will automatically notify
+the appropriate team members, based on the scope of your changes.  This
+relies on the @file{etc/teams.scm} script, which can also be invoked
+manually if you do not use the preferred @command{git send-email}
+command to submit patches.  To list the available actions of the script,
+you can invoke it via the @command{etc/teams.scm help} command.  For
+more information regarding teams, see @xref{Teams}.
 
 @unnumberedsubsubsec Multiple Patches
 @anchor{Multiple Patches}
@@ -1528,9 +1505,7 @@ Sending a Patch Series
 that we can send the rest of the patches to.
 
 @example
-$ git send-email outgoing/0000-cover-letter.patch -a \
-      --to=guix-patches@@gnu.org \
-      $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/0000-cover-letter.patch --annotate
 $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
 @end example
 
@@ -1542,9 +1517,7 @@ Sending a Patch Series
 can send the actual patches to the newly-created issue address.
 
 @example
-$ git send-email outgoing/*.patch \
-      --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
-      $(etc/teams.scm cc-members ...)
+$ git send-email outgoing/*.patch --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
 $ rm -rf outgoing # we don't need these anymore
 @end example
 
@@ -1553,14 +1526,13 @@ Sending a Patch Series
 the patchset.
 
 @example
-$ git send-email -@var{NUMBER_COMMITS} \
-      -v@var{REVISION} --base=auto \
+$ git send-email -@var{NUMBER_COMMITS} -v@var{REVISION} \
       --to @var{ISSUE_NUMBER}@@debbugs.gnu.org
 @end example
 
-If need be, you may use @option{--cover-letter -a} to send another cover
-letter, e.g. for explaining what's changed since the last revision, and
-these changes are necessary.
+If need be, you may use @option{--cover-letter --annotate} to send
+another cover letter, e.g. for explaining what's changed since the last
+revision, and these changes are necessary.
 
 @node Teams
 @subsection Teams
@@ -1587,7 +1559,8 @@ Teams
 CC of a patch series:
 
 @example
-$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
+$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org \
+  --header-cmd='etc/teams.scm cc-mentors-header-cmd' *.patch
 @end example
 
 The appropriate team or teams can also be inferred from the modified
@@ -1596,7 +1569,7 @@ Teams
 
 @example
 $ guix shell -D guix
-[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
+[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org -2
 @end example
 
 @node Tracking Bugs and Patches
@@ -1831,16 +1804,9 @@ Commit Access
 make authenticate
 @end example
 
-You can prevent yourself from accidentally pushing unsigned or signed
-with the wrong key commits to Savannah by using the pre-push Git hook
-located at @file{etc/git/pre-push}:
-
-@example
-cp etc/git/pre-push .git/hooks/pre-push
-@end example
-
-It additionally calls @code{make check-channel-news} to be sure
-@file{news.scm} file is correct.
+To avoid accidentally pushing unsigned or signed with the wrong key
+commits to Savannah, make sure to configure Git according to
+@xref{Configuring Git}.
 
 @subsection Commit Policy
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 9997aeb86e..e5f6c7e831 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -49,7 +49,7 @@
 Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@*
 Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@*
 Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@*
-Copyright @copyright{} 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer@*
 Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make'.
  2023-04-24  2:29               ` bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make' Maxim Cournoyer
@ 2023-04-24  4:22                 ` Liliana Marie Prikler
  2023-04-24 12:37                   ` Maxim Cournoyer
  2023-04-28 14:28                 ` Josselin Poiret via Bug reports for GNU Guix
  1 sibling, 1 reply; 43+ messages in thread
From: Liliana Marie Prikler @ 2023-04-24  4:22 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813; +Cc: ludo, zimon.toutoune

Am Sonntag, dem 23.04.2023 um 22:29 -0400 schrieb Maxim Cournoyer:
> This means we do not need to worry anymore about manually syncing the
> pre-push git hook or the Guix-provided git configuration.
IIUC we still need to invoke 'make .git/whatever' manually, and I'd
actually like it to be that way, just with a nice phony target like
'make git-config' or 'make .git'.  WDYT?

> * etc/git/gitconfig: Augment configuration template with useful
> options to allow for auto-configuration.
> * Makefile.am (.git/hooks/pre-push, .git/config): New targets.
> (nodist_noinst_DATA): New primary variable holding the above targets.
> ---
>  Makefile.am       | 10 ++++++++++
>  etc/git/gitconfig | 15 +++++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/Makefile.am b/Makefile.am
> index 23b939b674..7daa7d66f7 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -14,6 +14,7 @@
>  # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
>  # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
>  # Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +# Copyright © 2020, 2021, 2023 Maxim Cournoyer
> <maxim.cournoyer@gmail.com>
>  # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
>  # Copyright © 2021 Andrew Tropin <andrew@trop.in>
>  #
> @@ -1109,6 +1110,15 @@ cuirass-jobs: $(GOBJECTS)
>  .PHONY: clean-go make-go as-derivation authenticate
>  .PHONY: update-guix-package update-NEWS cuirass-jobs release
>  
> +# Git auto-configuration.
> +.git/hooks/pre-push: etc/git/pre-push
> +       cp etc/git/pre-push .git/hooks/pre-push
> +
> +.git/config: etc/git/gitconfig
> +       git config include.path ../etc/git/gitconfig
> +
> +nodist_noinst_DATA = .git/hooks/pre-push .git/config
> +
>  # Downloading up-to-date PO files.
>  
>  WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
> diff --git a/etc/git/gitconfig b/etc/git/gitconfig
> index c9ebdc8fa8..0b6984a05f 100644
> --- a/etc/git/gitconfig
> +++ b/etc/git/gitconfig
> @@ -1,5 +1,20 @@
> +[commit]
> +        gpgsign = true
> +
>  [diff "scheme"]
>         xfuncname = "^(\\(define.*)$"
>  
>  [diff "texinfo"]
>         xfuncname = "^@node[[:space:]]+([^,]+).*$"
> +
> +[format]
> +        useAutoBase = true
> +        thread = shallow
> +
> +[pull]
> +        rebase = true
> +
> +[sendemail]
> +        to = guix-patches@gnu.org
> +        headerCmd = etc/teams.scm cc-members-header-cmd
> +        thread = no

Otherwise LGTM.

Cheers




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make'.
  2023-04-24  4:22                 ` Liliana Marie Prikler
@ 2023-04-24 12:37                   ` Maxim Cournoyer
  0 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-04-24 12:37 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: ludo, 58813, zimon.toutoune

Hi Liliana,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Sonntag, dem 23.04.2023 um 22:29 -0400 schrieb Maxim Cournoyer:
>> This means we do not need to worry anymore about manually syncing the
>> pre-push git hook or the Guix-provided git configuration.

> IIUC we still need to invoke 'make .git/whatever' manually, and I'd
> actually like it to be that way, just with a nice phony target like
> 'make git-config' or 'make .git'.  WDYT?

Do, because the targets are added to nodist_noinst_DATA, they are
included in the default 'all' target (i.e., just invoking 'make' builds
them).

Because of that, a .PHONY target is not needed.  I think this is best,
since otherwise when etc/git/pre-push changed, you'd have to remember to
run 'make configure-git' for example.  It'd be error prone, and
easy to forget.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make'.
  2023-04-24  2:29               ` bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make' Maxim Cournoyer
  2023-04-24  4:22                 ` Liliana Marie Prikler
@ 2023-04-28 14:28                 ` Josselin Poiret via Bug reports for GNU Guix
  2023-05-01 16:38                   ` bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
  1 sibling, 1 reply; 43+ messages in thread
From: Josselin Poiret via Bug reports for GNU Guix @ 2023-04-28 14:28 UTC (permalink / raw)
  To: Maxim Cournoyer, 58813
  Cc: ludo, liliana.prikler, Maxim Cournoyer, zimon.toutoune

[-- Attachment #1: Type: text/plain, Size: 804 bytes --]

Hi Maxim,

Only seeing this patchset now, but it seems great!

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> +[commit]
> +        gpgsign = true
> +
>  [diff "scheme"]
>  	xfuncname = "^(\\(define.*)$"
>  
>  [diff "texinfo"]
>  	xfuncname = "^@node[[:space:]]+([^,]+).*$"
> +
> +[format]
> +        useAutoBase = true
> +        thread = shallow
> +
> +[pull]
> +        rebase = true
> +
> +[sendemail]
> +        to = guix-patches@gnu.org
> +        headerCmd = etc/teams.scm cc-members-header-cmd
> +        thread = no

Could we also consider adding format.forceinbodyfrom=true, so that
contributors whose From: gets rewritten by debbugs/mailman still have
the proper attribution without requiring manual action from committers?

Best,
-- 
Josselin Poiret

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 682 bytes --]

^ permalink raw reply	[flat|nested] 43+ messages in thread

* bug#58813: can't substitute etc/teams.scm command as doc suggests
  2023-04-28 14:28                 ` Josselin Poiret via Bug reports for GNU Guix
@ 2023-05-01 16:38                   ` Maxim Cournoyer
  0 siblings, 0 replies; 43+ messages in thread
From: Maxim Cournoyer @ 2023-05-01 16:38 UTC (permalink / raw)
  To: Josselin Poiret; +Cc: ludo, liliana.prikler, 58813-done, zimon.toutoune

Hi,

Josselin Poiret <dev@jpoiret.xyz> writes:

> Hi Maxim,
>
> Only seeing this patchset now, but it seems great!
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>
>> +[commit]
>> +        gpgsign = true
>> +
>>  [diff "scheme"]
>>  	xfuncname = "^(\\(define.*)$"
>>  
>>  [diff "texinfo"]
>>  	xfuncname = "^@node[[:space:]]+([^,]+).*$"
>> +
>> +[format]
>> +        useAutoBase = true
>> +        thread = shallow
>> +
>> +[pull]
>> +        rebase = true
>> +
>> +[sendemail]
>> +        to = guix-patches@gnu.org
>> +        headerCmd = etc/teams.scm cc-members-header-cmd
>> +        thread = no
>
> Could we also consider adding format.forceinbodyfrom=true, so that
> contributors whose From: gets rewritten by debbugs/mailman still have
> the proper attribution without requiring manual action from committers?

Seems reasonable.  I've added it in, and have now pushed the series.
The upstream git commit hasn't been merged yet, but I've addressed all
their comments, and will continue doing so.

Closing, finally :-).  I'll push an associated news entry shortly.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2023-05-01 16:39 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-27  3:50 bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
2022-10-27  6:08 ` Liliana Marie Prikler
2022-10-27 12:40   ` Maxim Cournoyer
2022-10-27 16:27     ` Liliana Marie Prikler
2023-02-26  3:55 ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
2023-02-26  8:25   ` Liliana Marie Prikler
2023-02-26 17:11     ` Maxim Cournoyer
2023-02-27  0:45       ` Tobias Geerinckx-Rice via Bug reports for GNU Guix
2023-02-27 16:43         ` Maxim Cournoyer
2023-03-03  9:54   ` Ludovic Courtès
2023-03-03 17:26     ` Liliana Marie Prikler
2023-03-06 14:53       ` bug#58813: ‘guix style’ flaws Ludovic Courtès
2023-03-06 17:42         ` Maxim Cournoyer
2023-03-07  1:07     ` bug#58813: [PATCH] doc: Document how to use Patman for patches submission Maxim Cournoyer
2023-03-10  9:01       ` Ludovic Courtès
2023-03-10 14:07         ` Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
2023-04-23 17:00             ` Liliana Marie Prikler
2023-04-24  0:46               ` Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 3/5] teams: Add a configure-git action Maxim Cournoyer
2023-04-23 17:03             ` Liliana Marie Prikler
2023-04-24  0:59               ` Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 0/5] Fix teams.scm by use of a new --header-cmd git send-email option Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 1/5] gnu: git: Apply patch adding the --header-cmd feature Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 2/5] teams: Add 'cc-members-header-cmd' action Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 3/5] Makefile.am: Auto-configure Git on 'make' Maxim Cournoyer
2023-04-24  4:22                 ` Liliana Marie Prikler
2023-04-24 12:37                   ` Maxim Cournoyer
2023-04-28 14:28                 ` Josselin Poiret via Bug reports for GNU Guix
2023-05-01 16:38                   ` bug#58813: can't substitute etc/teams.scm command as doc suggests Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
2023-04-24  2:29               ` bug#58813: [PATCH v2 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 4/5] teams: Add a 'cc-mentors-header-cmd' action Maxim Cournoyer
2023-04-23 16:04           ` bug#58813: [PATCH 5/5] doc: Simplify contributing section by automating git configuration Maxim Cournoyer
2023-03-07 11:35 ` bug#58813: [PATCH v2] doc: Document how to use Patman for patches submission Simon Tournier
2023-03-07 16:46   ` Maxim Cournoyer
2023-03-07 17:39     ` Simon Tournier
2023-03-08  5:29       ` Liliana Marie Prikler
2023-03-08  8:47         ` Simon Tournier
2023-03-08 16:26           ` Maxim Cournoyer
2023-03-08 17:05             ` Simon Tournier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).