Re: [PATCH 2/2] SubmittingPatches: extend the "flow" section

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> Explain a full lifecycle of a patch series upfront, so that it is
> clear when key decisions to "accept" a series is made and how a new
> patch series becomes a part of a new release.
>
> Earlier, we described an idealized patch flow that nobody followed
> in practice.  Instead, describe what flow was used in practice for
> the past decade that worked well for us.
>
> Fold the "you need to monitor the progress of your topic" section
> into the primary "patch lifecycle" section, as that is one of the
> things the patch submitter is responsible for.
>
> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx>
> ---
>  Documentation/SubmittingPatches | 112 +++++++++++++++++++-------------
>  1 file changed, 68 insertions(+), 44 deletions(-)
>
> diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
> index 142b82a71b..8922aae4a5 100644
> --- a/Documentation/SubmittingPatches
> +++ b/Documentation/SubmittingPatches
> @@ -8,53 +8,76 @@ project. There is also a link:MyFirstContribution.html[step-by-step tutorial]
>  available which covers many of these same guidelines.
>
>  [[patch-flow]]
> -=== An ideal patch flow
> -
> -Here is an ideal patch flow for this project the current maintainer
> -suggests to the contributors:
> -
> -. You come up with an itch.  You code it up.
> -
> -. Send it to the list and cc people who may need to know about
> -  the change.
> +=== A not-so ideal patch flow
> +
> +To help us understand the reason behind various guidelines given later
> +in the document, first lets understand how the lifecycle of a typical
> +patch series for this project goes.
> +
> +. You come up with an itch.  You code it up.  You do not need any
> +  pre-authorization from the project to do so.  Your patches will be

Wouldn't it be better to have the following sentences after the next
para?

So the flow would be
- Have an itch. Code it up.
- Send patches to list.
- Get reviews.

> +  reviewed by other contributors on the mailing list, and the reviews
> +  will be done to assess the merit of various things, like the general
> +  idea behind your patch (including "is it solving a problem worth
> +  solving in the first place?"), the reason behind the design of the
> +  solution, and the actual implementation.
> +
> +. You send the patches to the list and cc people who may need to know
> +  about the change.  Your goal is *not* necessarily to convince others
> +  that what you are building is a good idea.  Your goal is to get help
> +  in coming up with a solution for the "itch" that is better than what
> +  you can build alone.
>  +
> -The people who may need to know are the ones whose code you
> -are butchering.  These people happen to be the ones who are
> +The people who may need to know are the ones who worked on the code
> +you are touching.  These people happen to be the ones who are

This reads much _nicer_.

>  most likely to be knowledgeable enough to help you, but
> -they have no obligation to help you (i.e. you ask for help,
> -don't demand).  +git log -p {litdd} _$area_you_are_modifying_+ would
> +they have no obligation to help you (i.e. you ask them for help,
> +you don't demand).  +git log -p {litdd} _$area_you_are_modifying_+ would
>  help you find out who they are.
>
> -. You get comments and suggestions for improvements.  You may
> -  even get them in an "on top of your change" patch form.
> -
> -. Polish, refine, and re-send to the list and the people who
> -  spend their time to improve your patch.  Go back to step (2).
> -
> -. The list forms consensus that the last round of your patch is
> -  good.  Send it to the maintainer and cc the list.
> -
> -. A topic branch is created with the patch and is merged to `next`,
> -  and cooked further and eventually graduates to `master`.
> -
> -In any time between the (2)-(3) cycle, the maintainer may pick it up
> -from the list and queue it to `seen`, in order to make it easier for
> -people to play with it without having to pick up and apply the patch to
> -their trees themselves.
> -
> -[[patch-status]]
> -=== Know the status of your patch after submission
> -
> -* You can use Git itself to find out when your patch is merged in
> -  master. `git pull --rebase` will automatically skip already-applied
> -  patches, and will let you know. This works only if you rebase on top
> -  of the branch in which your patch has been merged (i.e. it will not
> -  tell you if your patch is merged in `seen` if you rebase on top of
> -  master).
> +. You get comments and suggestions for improvements.  You may even get
> +  them in an "on top of your change" patch form.  You are expected to
> +  respond to them with "Reply-All" on the mailing list, while taking
> +  them into account while preparing an updated set of patches.
> +
> +. Polish, refine, and re-send your patches to the list and the people who
> +  spent their time to improve your patch.  Go back to step (2).
> +
> +. While the above iterations improve your patches, the maintainer may
> +  pick the patches up from the list and queue them to the `seen`
> +  branch, in order to make it easier for people to play with it
> +  without having to pick up and apply the patches to their trees
> +  themselves.  Being in `seen` has no other meaning.  Specifically, it
> +  does not mean the patch was "accepted" in any way.
> +
> +. When the discussion reaches a consensus that the latest iteration of
> +  the patches are in good enough shape, the maintainer includes the
> +  topic in the "What's cooking" report that are sent out a few times a
> +  week to the mailing list, marked as "Will merge to 'next'."  This
> +  decision is primarily made by the maintainer with the help from
> +  reviewers.
> +
> +. Once the patches hit 'next', the discussion can still continue to
> +  further improve them by adding more patches on top, but by the time
> +  a topic gets merged to 'next', it is expected that everybody agreed
> +  that the scope and the basic direction of the topic are appropriate,
> +  so such an incremental updates are expected to be limited to small
> +  corrections and polishing.  After a topic cooks for some time (like
> +  7 calendar days) in 'next' without further tweaks on top, it gets
> +  merged to the 'master' branch and wait to become part of the next
> +  major release.
> +
> +Earlier versions of this document outlined a slightly different patch
> +flow in an idealized world, where the original submitter gathered
> +agreements from the participants of the discussion and sent the final
> +"we all agreed that this is the good version--please apply" patches
> +to the maintainer.  In practice, this almost never happened.  The flow
> +described above reflects the reality much better and can be considered
> +the "canonical" procedure to get the patch accepted to the project.
> +
> +In the following sections, many techniques and conventions are listed
> +to help your patches get reviewed effectively.
>
> -* Read the Git mailing list, the maintainer regularly posts messages
> -  entitled "What's cooking in git.git" giving
> -  the status of various proposed changes.
>
>  [[choose-starting-point]]
>  === Choose a starting point.
> @@ -241,8 +264,9 @@ reasons:
>    which case, they can explain why they extend your code to cover
>    files, too).
>
> -The goal of your log message is to convey the _why_ behind your
> -change to help future developers.
> +The goal of your log message is to convey the _why_ behind your change
> +to help future developers.  The reviewers will also make sure that
> +your proposed log message will serve this purpose well.
>
>  The first line of the commit message should be a short description (50
>  characters is the soft limit, see DISCUSSION in linkgit:git-commit[1]),
> --
> 2.45.0-119-g0f3415f1f8

Thanks, this is great improvement.

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux