trailers: retrieving code-review trailers
This commands allows you to easily retrieve code-review trailers sent in reply to your work and apply them to the matching commits. It should locate code-review trailers sent in response to any previously submitted versions of your series, as long as the patch-id of the commit still matches what was sent.
If you have edited a commit since posting it (for example, rebased or amended it), its patch-id will have changed and the matching trailers will be missed. In that case, see Recovering trailers when the patch-id has changed below.
You can always edit the trailers after they are applied by using git
rebase -i and choosing reword as rebase action.
Most commonly, you just need to run:
b4 trailers -u
Reviewing trailers before applying them
New in version v0.16.
Because trailers are matched by patch-id, b4 may occasionally pull in a
trailer that you did not expect – for example, a Reviewed-by: that was
given to an identical patch in an older series that was never actually
applied. If you would like to review and selectively reject incoming
trailers, run:
b4 trailers -u -i
This opens your editor with the list of trailers about to be applied, grouped per commit, each shown with the message it came from:
- [PATCH 1/2] Add frobnicator support
+ Reviewed-by: Foo Bar <foobar@example.com>
# via: https://lore.kernel.org/r/msgid@example.com
The - <patch> lines say which patch each trailer belongs to, so the same
trailer can be kept on one patch and rejected on another. To reject a
trailer, change its leading + to an x and save. The rejection is
remembered in .git/b4-trailers-ignore.json, keyed by the trailer and the
message it came from (its provenance), so the same trailer from that message
will not be offered again on later b4 trailers -u runs – including after
you reroll the series. Because the key is the provenance message and not the
patch-id, a rejection survives rebases and rewording; and if the reviewer
later re-sends the same trailer directly for your current series, that fresh
message is offered as new rather than silently dropped. Editing, adding,
removing, or reordering the - <patch> or trailer lines aborts the run
without making any changes.
Recovering trailers when the patch-id has changed
New in version v0.16.
By default, b4 matches incoming trailers to your commits by patch-id, so a
commit you have edited since posting (rebased, amended, or otherwise modified)
no longer matches and its trailers are skipped. Passing --fuzzy enables two
additional matching strategies, tried in order after the exact patch-id
match:
Link: message-id – if a commit carries a
Link:trailer pointing at the original posting (as maintainer-tree commits usually do), that message-id is used to locate the patch deterministically.subject – failing that, the commit is matched to a posting with the same subject. b4 refuses to guess when two of your commits share a subject.
Because these matches are looser than an exact patch-id, it is a good idea to
combine --fuzzy with -i so you can review each recovered trailer before
it is applied:
b4 trailers -u -i --fuzzy
When run on a branch that b4 prep does not manage and without
--trailers-from (for example, a maintainer tree used with
--since-commit), --fuzzy additionally harvests any Link: trailers
from the commits in range and fetches those threads. This lets b4 find the
relevant postings even when the patch-id no longer matches what is indexed on
the public-inbox server.
Command flags
-u, --updateUpdate branch commits with latest received trailers.
-i, --interactiveReview the trailers in your editor before applying them, rejecting any you don’t want by marking them with an
x. Implies-u.-S, --sloppy-trailersAccept trailers where the email address of the sender differs from the email address found in the trailer itself.
-F MSGID, --trailers-from MSGIDLook for trailer updates in an arbitrary tread found on the public-inbox server. Note, that this is generally only useful in the following two cases:
for branches not already managed by
b4 prepwhen a single larger series is broken up into multiple smaller series (or vice-versa)
--since GITLOGDATEOnly useful with
-F. By default, b4 will only look for your own commits as far as 1 month ago. With this flag, you can instruct it to look further back.--since-commit COMMITISHLooks at all commits that happened since the specified commit (or tag, or branch HEAD) where you are the committer, and then queries the public-inbox server for matching patch-ids. Pulls in any code-review trailers received for the matching patches. Combine with
--fuzzyto also recover trailers for commits whose patch-id has since changed.--fuzzyWhen a commit’s patch-id no longer matches what was posted, additionally try to match it by
Link:message-id and then by subject, rather than skipping it. See Recovering trailers when the patch-id has changed. Best combined with-i.