@@ -790,7 +790,7 @@ We can note a few things:
790790 v3", etc. in place of "PATCH". For example, "[PATCH v2 1/3]" would be the first of
791791 three patches in the second iteration. Each iteration is sent with a new cover
792792 letter (like "[PATCH v2 0/3]" above), itself a reply to the cover letter of the
793- previous iteration (more on that below).
793+ first iteration (more on that below).
794794
795795NOTE: A single-patch topic is sent with "[PATCH]", "[PATCH v2]", etc. without
796796_i_/_n_ numbering (in the above thread overview, no single-patch topic appears,
@@ -833,7 +833,7 @@ This patchset is part of the MyFirstContribution tutorial and should not
833833be merged.
834834----
835835
836- At this point the tutorial diverges, in order to demonstrate two
836+ At this point the tutorial diverges, in order to demonstrate three
837837different methods of formatting your patchset and getting it reviewed.
838838
839839The 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
845845setup which can change depending on your system and will not be covered in this
846846tutorial.
847847
848+ The third method to be covered is `b4`, which builds on top of `git
849+ format-patch` and `git send-email`. This method is the recommended way to
850+ submit patches via mail as it automates a lot of the bookkeeping required by
851+ `git send-email`.
852+
848853Regardless of which method you choose, your engagement with reviewers will be
849- the same; the review process will be covered after the sections on GitGitGadget
850- and `git send-email`.
854+ the same; the review process will be covered after the sections on GitGitGadget,
855+ `git send-email` and `b4 `.
851856
852857[[howto-ggg]]
853858== Sending Patches via GitGitGadget
@@ -1214,7 +1219,7 @@ between your last version and now, if it's something significant. You do not
12141219need the exact same body in your second cover letter; focus on explaining to
12151220reviewers the changes you've made that may not be as visible.
12161221
1217- You will also need to go and find the Message-ID of your previous cover letter.
1222+ You will also need to go and find the Message-ID of your first cover letter.
12181223You can either note it when you send the first series, from the output of `git
12191224send-email`, or you can look it up on the
12201225https://lore.kernel.org/git[mailing list]. Find your cover letter in the
@@ -1227,8 +1232,8 @@ Message-ID: <foo.12345.author@example.com>
12271232
12281233Your Message-ID is `<foo.12345.author@example.com>`. This example will be used
12291234below as well; make sure to replace it with the correct Message-ID for your
1230- **previous cover letter** - that is, if you're sending v2, use the Message-ID
1231- from v1; if you're sending v3, use the Message-ID from v2 .
1235+ **first cover letter** - that is, for any subsequent version that you send,
1236+ always use the Message-ID from v1 .
12321237
12331238While you're looking at the email, you should also note who is CC'd, as it's
12341239common practice in the mailing list to keep all CCs on a thread. You can add
@@ -1296,6 +1301,87 @@ index 88f126184c..38da593a60 100644
129613012.21.0.392.gf8f6787159e-goog
12971302----
12981303
1304+ [[howto-b4]]
1305+ == Sending Patches with `b4`
1306+
1307+ `b4` is a tool that builds on top of `git format-patch` and `git send-email`.
1308+ It automates much of the bookkeeping involved in sending a patch series to a
1309+ mailing-list-based project.
1310+
1311+ Refer to the https://b4.docs.kernel.org/[b4 documentation] for a full reference.
1312+
1313+ [[prep-b4]]
1314+ === Preparing a Patch Series
1315+
1316+ `b4` tracks your patch series as a branch. To start tracking the `psuh` branch
1317+ you have been working on, run:
1318+
1319+ ----
1320+ $ b4 prep --enroll master
1321+ ----
1322+
1323+ This enrolls the current branch, using `master` as the base of the topic. `b4`
1324+ manages the cover letter as part of the branch, so you can edit it at any time
1325+ with:
1326+
1327+ ----
1328+ $ b4 prep --edit-cover
1329+ ----
1330+
1331+ The cover letter not only tracks the content of the top-level mail, but also
1332+ the set of recipients. You can add recipients by adding `To:` and `Cc:`
1333+ trailer lines.
1334+
1335+ [[send-b4]]
1336+ === Sending the Patches
1337+
1338+ Before sending the series out for real, you can inspect what `b4` would send by
1339+ passing `--dry-run`:
1340+
1341+ ----
1342+ $ b4 send --dry-run
1343+ ----
1344+
1345+ Once you are happy with the result, send the series with:
1346+
1347+ ----
1348+ $ b4 send
1349+ ----
1350+
1351+ [[v2-b4]]
1352+ === Sending v2
1353+
1354+ When you are ready to send a new iteration of your series, refine your
1355+ patches as usual using linkgit:git-rebase[1]. Note that you typically want to
1356+ rebase on top of the cover letter. You can configure an alias to enable easy
1357+ rebases going forward:
1358+
1359+ ---
1360+ $ git config set alias.b4-rebase 'rebase "HEAD^{/--- b4-submit-tracking ---}"'
1361+ $ git b4-rebase -i
1362+ ---
1363+
1364+ Before sending out the new version you should also update the cover letter with
1365+ `b4 prep --edit-cover` to note the relevant changes compared to the previous
1366+ version. You can inspect the changes between the two versions with `b4 prep
1367+ --compare-to=v1`.
1368+
1369+ Same as with the first version, you can use `b4 send` to send out the second
1370+ version. `b4` automatically bumps the version to `v2`, generates the range-diff
1371+ against the previous iteration, and threads the new series as a reply to the
1372+ cover letter of the first version.
1373+
1374+ [[configure-b4]]
1375+ === Configure b4
1376+
1377+ `b4` can be configured via linkgit:git-config[1]. In addition to that, projects
1378+ can have their own set of defaults in `.b4-config` in the root tree, which also
1379+ uses Git's config format. The user's configuration always takes precedence over
1380+ the per-project defaults.
1381+
1382+ Refer to the https://b4.docs.kernel.org/en/latest/config.html[b4 config documentation]
1383+ for more information on the available options.
1384+
12991385[[now-what]]
13001386== My Patch Got Emailed - Now What?
13011387
0 commit comments