Merge branch 'ps/doc-recommend-b4' into seen

Project-specific configuration for b4 has been introduced, and the
documentation has been updated to recommend using it as a
streamlined method for submitting patches.

* ps/doc-recommend-b4:
  b4: introduce configuration for the Git project
  Documentation/MyFirstContribution: recommend the use of b4
  Documentation/MyFirstContribution: recommend shallow threading
This commit is contained in:
Junio C Hamano
2026-06-03 19:32:41 +09:00
4 changed files with 112 additions and 7 deletions

6
.b4-config Normal file
View File

@@ -0,0 +1,6 @@
# Note that these are default values that you can tweak via the typical
# git-config(1) machinery. You thus shouldn't ever have to change this file.
# See also https://b4.docs.kernel.org/en/latest/config.html.
[b4]
send-same-thread = shallow
prep-cover-template = ./.b4-cover-template

11
.b4-cover-template Normal file
View File

@@ -0,0 +1,11 @@
${cover}
---
${shortlog}
${diffstat}
${range_diff}
---
base-commit: ${base_commit}
${prerequisites}

View File

@@ -833,7 +833,7 @@ This patchset is part of the MyFirstContribution tutorial and should not
be merged.
----
At this point the tutorial diverges, in order to demonstrate two
At this point the tutorial diverges, in order to demonstrate three
different methods of formatting your patchset and getting it reviewed.
The first method to be covered is GitGitGadget, which is useful for those
@@ -845,9 +845,14 @@ more fine-grained control over the emails to be sent. This method requires some
setup which can change depending on your system and will not be covered in this
tutorial.
The third method to be covered is `b4`, which builds on top of `git
format-patch` and `git send-email`. This method is the recommended way to
submit patches via mail as it automates a lot of the bookkeeping required by
`git send-email`.
Regardless of which method you choose, your engagement with reviewers will be
the same; the review process will be covered after the sections on GitGitGadget
and `git send-email`.
the same; the review process will be covered after the sections on GitGitGadget,
`git send-email` and `b4`.
[[howto-ggg]]
== Sending Patches via GitGitGadget
@@ -1227,8 +1232,8 @@ Message-ID: <foo.12345.author@example.com>
Your Message-ID is `<foo.12345.author@example.com>`. This example will be used
below as well; make sure to replace it with the correct Message-ID for your
**previous cover letter** - that is, if you're sending v2, use the Message-ID
from v1; if you're sending v3, use the Message-ID from v2.
**first cover letter** - that is, for any subsequent version that you send,
always use the Message-ID from v1.
While you're looking at the email, you should also note who is CC'd, as it's
common practice in the mailing list to keep all CCs on a thread. You can add
@@ -1296,6 +1301,87 @@ index 88f126184c..38da593a60 100644
2.21.0.392.gf8f6787159e-goog
----
[[howto-b4]]
== Sending Patches with `b4`
`b4` is a tool that builds on top of `git format-patch` and `git send-email`.
It automates much of the bookkeeping involved in sending a patch series to a
mailing-list-based project.
Refer to the https://b4.docs.kernel.org/[b4 documentation] for a full reference.
[[prep-b4]]
=== Preparing a Patch Series
`b4` tracks your patch series as a branch. To start tracking the `psuh` branch
you have been working on, run:
----
$ b4 prep --enroll master
----
This enrolls the current branch, using `master` as the base of the topic. `b4`
manages the cover letter as part of the branch, so you can edit it at any time
with:
----
$ b4 prep --edit-cover
----
The cover letter not only tracks the content of the top-level mail, but also
the set of recipients. You can add recipients by adding `To:` and `Cc:`
trailer lines.
[[send-b4]]
=== Sending the Patches
Before sending the series out for real, you can inspect what `b4` would send by
passing `--dry-run`:
----
$ b4 send --dry-run
----
Once you are happy with the result, send the series with:
----
$ b4 send
----
[[v2-b4]]
=== Sending v2
When you are ready to send a new iteration of your series, refine your
patches as usual using linkgit:git-rebase[1]. Note that you typically want to
rebase on top of the cover letter. You can configure an alias to enable easy
rebases going forward:
---
$ git config set alias.b4-rebase 'rebase "HEAD^{/--- b4-submit-tracking ---}"'
$ git b4-rebase -i
---
Before sending out the new version you should also update the cover letter with
`b4 prep --edit-cover` to note the relevant changes compared to the previous
version. You can inspect the changes between the two versions with `b4 prep
--compare-to=v1`.
Same as with the first version, you can use `b4 send` to send out the second
version. `b4` automatically bumps the version to `v2`, generates the range-diff
against the previous iteration, and threads the new series as a reply to the
cover letter of the first version.
[[configure-b4]]
=== Configure b4
`b4` can be configured via linkgit:git-config[1]. In addition to that, projects
can have their own set of defaults in `.b4-config` in the root tree, which also
uses Git's config format. The user's configuration always takes precedence over
the per-project defaults.
Refer to the https://b4.docs.kernel.org/en/latest/config.html[b4 config documentation]
for more information on the available options.
[[now-what]]
== My Patch Got Emailed - Now What?

View File

@@ -598,8 +598,10 @@ your existing e-mail client (often optimized for "multipart/*" MIME
type e-mails) might render your patches unusable.
NOTE: Here we outline the procedure using `format-patch` and
`send-email`, but you can instead use GitGitGadget to send in your
patches (see link:MyFirstContribution.html[MyFirstContribution]).
`send-email`, but you can instead use GitGitGadget or `b4` to send in
your patches (see link:MyFirstContribution.html[MyFirstContribution]).
Contributors are encouraged to use `b4`, which automates much of the
bookkeeping that is otherwise done by hand.
People on the Git mailing list need to be able to read and
comment on the changes you are submitting. It is important for