Configuration options
B4 doesn’t have a separate configuration file but uses git-config to
retrieve a set of b4-specific settings. This means that you can have three
levels of b4 configuration:
system-wide, in
/etc/gitconfigper-user, in
$HOME/.gitconfigper-repo, in
somerepo/.git/config
Since the purpose of b4 is to work with git repositories, this allows
the usual fall-through configuration, with local settings specified in
.git/config overriding the global defaults.
You can also use the command-line switch -c/--config to override
specific options, for example:
b4 --config b4.midmask=https://some.host/%s
Per-project defaults
A project may ship their own b4 configuration file with some defaults,
located at the top-level of the git tree. If you’re not sure where a
configuration option is coming from, see if there is a .b4-config
file in the repository you’re currently using.
Configuration options
All settings are under the b4 section. For example, to set the
b4.midmask option, add the following section to the relevant git
config file:
[b4]
midmask = https://some.host/%s
Core options
These options control many of the core features of b4.
b4.midmaskSpecifies the server from where to retrieve the messages specified by their message-id.
Default:
https://lore.kernel.org/%sb4.linkmaskB4 uses this setting to construct the URL in the
Link:trailers. If you want a shorter option, you can also usehttps://msgid.link/%s, which is an alias for lore.kernel.org.Default:
https://lore.kernel.org/%sb4.searchmaskB4 uses this setting to query and retrieve threads matching specific search terms. For example, it can retrieve trailer updates using the series
change-ididentifier.Default:
https://lore.kernel.org/all/?x=m&t=1&q=%sb4.linktrailermask(v0.13+)Overrides the format of the
Link:trailer, in case you want to call it something other than “Link.” For example, some projects use “Message-Id” trailers instead:linktrailermask = Message-ID: <%s>
The
%sis the placeholder for the message-id.Note: starting with version 0.14, you can pass the
-icommand-line switch instead of-lto automatically insert theMessage-IDtrailer.Default:
Link: https://lore.kernel.org/%sb4.listid-preferenceSometimes messages with the same message-id can have different contents, because some servers modify message bodies to inject list subscription information. B4 attempts to de-duplicate the results using the
List-Idheader. You may use this parameter to specify the order of preference, using comma-separated strings with shell-style wildcard globbing.Default:
*.feeds.kernel.org, *.linux.dev,*.kernel.org,*b4.save-maildirsThe “mbox” file format is actually several incompatible standards, such as “mboxo” vs. “mboxrd.” Setting this option can avoid potential problems by saving retrieved threads as Maildirs.
Default:
nob4.trailer-orderThis lets you control the order of trailers that get added to your own custody section of the commit message. By default, b4 applies these trailers in the order received. However, if you want to list trailers in a specific order, you can try something like:
trailer-order = link*,fixes*,acked*,reviewed*,tested*,*
The “chain of custody” is an important concept in patch-based code review process. Each “Signed-off-by” trailer indicates where the custody section of previous reviewer ends and the new one starts. Your own custody section is always between the previous-to-last “Signed-off-by” trailer, if any, and the bottom of the trailer section. For example:
Fixes: abcde (Commit info) Suggested-by: Alex Reporter <alex.reporter@example.com> Signed-off-by: Betty Developer <betty.developer@example.com> Acked-by: Chandra Acker <chandra.acker@example.com> Reviewed-by: Debby Reviewer <debby.reviewer@example.com> Signed-off-by: Ezri Submaintainer <ezri.submaintainer@example.com> Link: https://msgid.link/some@thing.foo Tested-by: Finn Tester <finn.tester@example.com> Signed-off-by: Your Name <your.name@example.com>
Your custody section is beneath “Ezri Submaintainer,” so the only trailers considered for reordering are “Link” and “Tested-by.” Your own Signed-off-by trailer is always at the bottom of your own custody section.
Default:
*b4.trailers-ignore-fromA comma-separated list of addresses that b4 should always ignore when applying follow-up trailers. This is useful when dealing with reports generated by some automated bots. For example:
trailers-ignore-from = lkp@intel.com, someotherbot@example.org
Default:
Noneb4.cache-expireB4 caches retrieved threads for 10 minutes. This option allows tweaking the time that the cache remains valid. Many commands also allow a
--no-cacheflag to force b4 to perform remote lookups.Default:
10
am and shazam settings
These settings control b4 am and b4 shazam behavior.
b4.shazam-am-flagsAdditional flags to pass to
git amwhen applying patches.Default:
Noneb4.shazam-merge-flagsAdditional flags to pass to
git mergewhen performing a merge withb4 shazam -MDefault:
--signoffb4.shazam-merge-templatePath to a template to use when creating a merge commit. See
shazam-merge-template.examplefor an example.Default:
Noneb4.am-perpatch-check-cmd(v0.14+)The command to use when running with
--check. If b4 findsscripts/checkpatch.plat the top of your git tree, it uses the command shown below by default.Default:
./scripts/checkpatch.pl -q --terse --no-summary --mailback
Attestation settings
b4.attestation-policy
B4 supports domain-level and end-to-end attestation of patches using the patatt library. There are four different operation modes:
off: don’t bother checking attestation at all
softfail: print green marks when attestation is passing and red marks when it’s failing
hardfail: exit with an error when any attestation checks failDefault:
softfail
b4.attestation-check-dkimControls whether to perform DKIM attestation checks.
Default:
yesb4.attestation-dns-resolvers(v0.14+)You can specify your own DNS servers if you are on a company network and your OS-provided resolvers aren’t able to perform domain key lookups. For example, to use Google DNS servers:
attestation-dns-resolvers = 8.8.8.8, 8.8.4.4
Default:
Noneb4.attestation-staleness-daysIgnore attestation signatures that are more than this many days old. This helps avoid a class of attacks when someone re-sends old patches that contain known security bugs.
Default:
30b4.attestation-gnupghomeSets
GNUPGHOMEbefore running PGP attestation checks that rely on GnuPG.Default:
Noneb4.gpgbinFull path to a different binary to use for
gpg. B4 also checks thegpg.programsetting, and uses that value, if found.Default:
Noneb4.keyringsrcSee
patattfor details on how to configure keyrings. For example, you can clone the kernel.org pgp keys repository and use it for attestation:git clone https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git
Then set the following in your
~/.gitconfig:[b4] keyringsrc = ~/path/to/pgpkeys/.keyring
Default:
None
ty settings
b4.thanks-pr-template,b4.thanks-am-templateFull paths to the templates to use when generating thank-you messages for contributors. See example templates provided with the project.
Default:
Noneb4.thanks-commit-url-maskUsed when creating summaries for
b4 ty, and can be a value like:thanks-commit-url-mask = https://git.kernel.org/username/c/%.12s
If not set, b4 falls back to using commit hashes.
Note
See this page for more info on convenient git.kernel.org short URLs: https://korg.docs.kernel.org/git-url-shorteners.html
Default:
Noneb4.thanks-from-name(v0.13+)The name to use in the
From:header when sending thank-you notes. By default, b4 usesuser.name. For example:thanks-from-name = Project Foo Thanks Bot
Default:
Noneb4.thanks-from-email(v0.13+)The email to use in the
From:header when sending thank-you notes. By default, b4 usesuser.email. For example:thanks-from-email = thanks-bot@example.com
Default:
Noneb4.thanks-treenameName of the tree to use in the thank-you templates.
Default:
Noneb4.email-excludeA list of addresses to always exclude from the message recipients. Expects a comma-separated list with shell-style globbing. E.g.:
email-exclude = *@codeaurora.org, *@obsolete.example.com
Default:
Noneb4.sendemail-identityThe
sendemailidentity to use when sending mail directly with b4. This setting applies tob4 sendandb4 ty. Seeman git-send-emailfor info about sendemail identities.Default:
Noneb4.ty-send-email(v0.11+)When set, tells
b4 tyto send email directly instead of writing out.thanksfiles.Default:
no
Patchwork integration settings
If your project uses a patchwork server, setting these allows you to integrate your b4 workflow with patchwork.
b4.pw-urlThe URL of your patchwork server. Note, that this should point at the top-level of your patchwork installation and not at the project patch listing. For example:
pw-url = https://patchwork.kernel.org/
Default:
Noneb4.pw-keyThe API key from your user profile to use when authenticating with the patchwork server.
Default:
Noneb4.pw-projectThe name of the patchwork project, exactly as seen in the URL sub-path. For example:
pw-project = linux-usb
Default:
Noneb4.pw-review-stateEnabling this option makes
b4 amorb4 shazamautomatically set the review status of the retrieved patches. For example:pw-review-state = under-review
Default:
Noneb4.pw-accept-stateEnabling this option makes
b4 tyset the status of any applied patches to the specified state. For example:pw-accept-state = accepted
Default:
Noneb4.pw-discard-stateEnabling this option makes
b4 ty -dset the status of any matching patches to the specified state. For example:pw-discard-state = rejected
Default:
None
Contributor-oriented settings
b4.send-endpoint-webThe web submission endpoint to use. See Authenticating with the web submission endpoint.
Default:
Noneb4.send-series-toA comma-separated list of addresses to always add to the “To:” header. See Prepare the list of recipients.
Default:
Noneb4.send-series-ccA comma-separated list of addresses to always add to the “Cc:” header. See Prepare the list of recipients.
Default:
Noneb4.send-no-patatt-signInstructs b4 not to sign patches with patatt before sending them. Note, that using the web submission endpoint requires using signed patches.
Default:
nob4.send-auto-to-cmdThe command to use for obtaining the list of “To:” recipients. Has no effect if the specified script isn’t present in the repository.
Default:
scripts/get_maintainer.pl --nogit --nogit-fallback --nogit-chief-penguins --norolestats --nolb4.send-auto-cc-cmdThe command to use for obtaining the list of Cc: recipients. Has no effect if the specified script isn’t present in the repository.
Default::
scripts/get_maintainer.pl --nogit --nogit-fallback --nogit-chief-penguins --norolestats --nomb4.send-same-thread(v0.13+)When sending a new version of a series, send it in the same thread as the previous version. B4 sends the first message of the new series as a reply to the previous version’s cover letter.
Default:
nob4.prep-cover-strategyAlternative cover letter storage strategy to use, in case you don’t want to use the default
commitstrategy. See Cover letter strategies.Default:
commitb4.prep-cover-templatePath to the template to use for the cover letter. The template supports the following tokens:
${cover}: the content of the cover letter itself${shortlog}: thegit shortlogoutput for the series${diffstat}: thegit diff --statoutput for the series${range_diff}: thegit range-diffoutput against the previous revision of the series${base_commit}: the base commit of the series${change_id}: the change-id of the series${signature}: your signature, either from~/.signatureif found, or from your Git config
Default:
Noneb4.send-prefixes(v0.11+)Extra prefixes to add to
[PATCH](e.g.RFC mydrv).This setting can be replaced for a series with
b4 prep --set-prefixes.Default:
Noneb4.prep-perpatch-check-cmd(v0.14+)The command to use when running
--check. If b4 findsscripts/checkpatch.plat the top of your git tree, it uses the command shown below by default.Default:
./scripts/checkpatch.pl -q --terse --no-summary --mailback --showfile`b4.prep-pre-flight-checks(v0.14+)You can use this to turn off some or all pre-flight checks that b4 runs prior to sending out patches. To cancel all checks:
[b4] prep-pre-flight-checks = disable-all
To turn off specific checks, list each one of them, separated by comma:
[b4] prep-pre-flight-checks = disable-needs-auto-to-cc, needs-checking
To document
b4.gh-api-keyDeliberately undocumented because the feature is incomplete and poorly tested.