Skip to content

Commit 655b3b7

Browse files
committed
Merge branch 'ps/doc-recommend-b4' into jch
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 MyFirstContribution: recommend the use of b4 MyFirstContribution: recommend shallow threading of cover letters
2 parents ed440a0 + 84b2ff7 commit 655b3b7

4 files changed

Lines changed: 114 additions & 9 deletions

File tree

.b4-config

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

.b4-cover-template

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
${cover}
2+
3+
---
4+
${shortlog}
5+
6+
${diffstat}
7+
8+
${range_diff}
9+
---
10+
base-commit: ${base_commit}
11+
${prerequisites}

Documentation/MyFirstContribution.adoc

Lines changed: 93 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

795795
NOTE: 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
833833
be 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
837837
different methods of formatting your patchset and getting it reviewed.
838838

839839
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
845845
setup which can change depending on your system and will not be covered in this
846846
tutorial.
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+
848853
Regardless 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
12141219
need the exact same body in your second cover letter; focus on explaining to
12151220
reviewers 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.
12181223
You can either note it when you send the first series, from the output of `git
12191224
send-email`, or you can look it up on the
12201225
https://lore.kernel.org/git[mailing list]. Find your cover letter in the
@@ -1227,8 +1232,8 @@ Message-ID: <foo.12345.author@example.com>
12271232

12281233
Your Message-ID is `<foo.12345.author@example.com>`. This example will be used
12291234
below 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

12331238
While you're looking at the email, you should also note who is CC'd, as it's
12341239
common practice in the mailing list to keep all CCs on a thread. You can add
@@ -1296,6 +1301,87 @@ index 88f126184c..38da593a60 100644
12961301
2.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

Documentation/SubmittingPatches

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -598,8 +598,10 @@ your existing e-mail client (often optimized for "multipart/*" MIME
598598
type e-mails) might render your patches unusable.
599599

600600
NOTE: Here we outline the procedure using `format-patch` and
601-
`send-email`, but you can instead use GitGitGadget to send in your
602-
patches (see link:MyFirstContribution.html[MyFirstContribution]).
601+
`send-email`, but you can instead use GitGitGadget or `b4` to send in
602+
your patches (see link:MyFirstContribution.html[MyFirstContribution]).
603+
Contributors are encouraged to use `b4`, which automates much of the
604+
bookkeeping that is otherwise done by hand.
603605

604606
People on the Git mailing list need to be able to read and
605607
comment on the changes you are submitting. It is important for

0 commit comments

Comments
 (0)