Age | Commit message (Collapse) | Author |
|
If we clean the to/cc headers to get rid of all unicode escaping, we run
into a Python bug that is unable to properly parse addresses, e.g.:
In [5]: from email import utils
In [6]: utils.getaddresses(['foo <foo@bar.com>'])
Out[6]: [('foo', 'foo@bar.com')]
In [7]: utils.getaddresses(['Shuming [范書銘] <shumingf@realtek.com>'])
Out[7]:
[('', 'Shuming'),
('', ''),
('', '范書銘'),
('', ''),
('', 'shumingf@realtek.com')]
If we store the headers as-is from the original message, we are less
likely to run into this bug, as all non-ascii sequences should be
qp-escaped in the original headers:
=?big5?B?U2h1bWluZyBbrVOu0bvKXQ==?= <shumingf@realtek.com>
This doesn't fix the underlying bug in Python, but works around it.
Reported-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
When saving to a maildir, add option to filter out dupes. Note, that
this requires going through the entire maildir to collect message-ids,
so it's not going to be a great experience on large maildirs.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
When -o is a valid maildir, then instead of saving an .mbox file add
messages to the maildir instead. This should allow "b4 mbox" to quickly
add threads to existing mail spools.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
If we're not passing -g to "b4 pr -e", then we should try to see if we
are inside a git checkout and use that as our source.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Since we now include the message object into the followup-trailer list
(for DKIM verification purposes), we no longer auto-dedupe duplicate
trailers. Add some extra logic to handle that.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Now that we always create a strict-threaded file, always clean it up
after we are done.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
When passing a local mbox, don't assume that it is going to contain a
strict thread already -- it can be just a local mailbox via something
like mbsync. This grabs actual thread from the mailbox before looking at
individual messages.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Don't forget to increment where we are when doing "continue".
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
By request, add ability to copy all addresses from the email's "Cc"
header into Cc: trailers, unless they are already mentioned in some
other trailer.
Requested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Now that we do our best to track incomplete series, don't crash when we
come across one.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Record patch counters when we start tracking series so we properly
indicate in the thank-you note which ones got applied. Additionally,
indicate in the subject when we're reporting on a subset of a larger
series.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Don't crash on incomplete threads when trying to carry over previous
trailers.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Handle several corner cases when trying to cherrypick from incomplete
series.
Reported-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
We don't need to needlessly convert to unicode when dumping to stdout,
especially when it can lead to crashers when we encounter other
charsets.
Reported-by: Rob Herring <robh@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
It's a simple if/else to support maildirs for local operations, so let's
handle mbox -m to be a maildir.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Return early if we don't have a cover letter or patch 1/X to use as
basis for the subject-based query.
Reported-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Fix mbox file naming problems introduced by adding "-o -".
Reported-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Show the actual trailer name we're complaining about.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Since we're piping out to stdout, there's obviously no reason to show
what the "git am" command should be -- especially if we delete the
temporary mbox file after the command completes.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
By request, provide a way to output the results of b4 am to stdout. This
way it can be piped straight to "git am".
E.g.:
b4 diff 20200526205322.23465-1-mic@digikod.net -o - | git am
Requested-by: Rob Herring <robh@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
The original code used for b4 diff was to prepare for a 3-way merge by
making sure that all blob indexes exist in the local repo. Add this
functionality to "b4 am" and document all the features added in the
0.5.0 branch.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Sometimes we are unable to properly look up previous series -- usually
because the cover letter title changes. For those cases, it is now
possible to diff two arbitrary mbox files prepared with "b4 am -T".
There's also a smattering of other fixes in there because I'm too
lazy to properly stage my patches.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Don't make developers do copy-pasting unnecessarily. Switch to
outputting the diff by default, with flag options to save to file or
just show what needs to be done.
Additionally, adds caching to lookups and remember previously generated
fake-am ranges so we don't continuously generate loose objects on repeat
runs.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Based on feedback from Jason Gunthorpe, implement diffing of series by
creating fake git-am commit ranges. Here's an easy example:
b4 diff 20200511192156.1618284-1-mic@digikod.net
Suggested-by: Jason Gunthorpe <jgg@ziepe.ca>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
In addition to numerical ranges, -P is now also able to do:
- "-P _" to grab just the msgid used with "b4 am"
- "-P *glob*" to filter by commit message subject
Suggested-by: Rob Herring <robh@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
This lets someone select a subset of patches in a series, e.g.:
b4 am -P 1-3,5,7- [msgid]
Suggested-by: Heiko Stübner <heiko@sntech.de>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Track message-id for each patch and try to apply to the Link: or
Message-Id: trailers, if we find them.
Suggested-by: Jason Gunthorpe <jgg@ziepe.ca>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Do not try to calculate indexes on a missing patch in an incomplete
thread.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Check if all patches in the mbox would apply cleanly to the current
tree:
- find index hash..hash information in each patch
- check if git-hash-object shows exact same hashes for the current tree
- if not, try the last 10 tags to see if any of them would be a good
base-commit for the patch/series
Not sure how useful the latter part it, but it hopefully shouldn't slow
down regular operations, so I'm going to leave it in for now.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Using strict attestation hashes for auto-thankinator is problematic,
because "git am" uses a certain degree of fuzzing, so when we try to
find applied patches by running "git diff" on actual commits, line
counts may not be bit-for-bit identical.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
They are much more useful if b4.thanks-commit-url-mask is set, but even
without them this will list all subjects and corresponding commit IDs.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Looks like some of the patches sent from quilt (at least from Andrew
Morton) are not properly parsed by git patch-id, so use our own patch
hashing routines, even if this means we're likely going to miss some of
the patches that were edited by maintainers.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
New experimental feature that aims to simplify a very common "thanks,
applied" kind of feedback often expected of maintainers. Still needs
documentation to explain its usage.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
While working on "pull-request exploder" stuff for achiving on
lore.kernel.org, I realized that this may be a useful set of features
for developers as well, so here is a very simple framework for handing
pull requests. Examples:
b4 pr <msgid>
- downloads that message
- parses the pull request
- checks that the remote tip is where the message says it should be
- makes sure the base-commit is present in the tree
- makes sure the tip commit isn't already in one of the branches
- checks if FETCH_HEAD already is at that commit
- if the above two checks pass, performs a git fetch
b4 pr --check <msgid>
Runs all of the checks above, but doesn't perform the actual fetch.
Useful if you don't remember if you've already processed a pull
request or not.
b4 pr --explode <msgid>
Runs basic sanity checks and then:
- performs a git fetch
- runs a "git format-patch" for base-commit..FETCH_HEAD
- adds the same to/from/cc headers as in the pull request
- properly threads each patch below the pull request
- saves that into a <msgid>.mbox file
The above is handy if you want to comment on something in a pull
request and not have to hunt around for sender/cc information.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Provide a warning when we are ignoring trailers due to from/name
mismatch between the headers and the body. Also provides a
-S,--sloppy-trailers option to ignore all mismatches.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
When piped from other tools, the msgid may be prepended by extraneous
info, so strip it to grab the actual msgid.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
When the same person sends multiple sets of patches on the same day, we
risk colliding between them. Use mbx names with cover/1st-patch subjects
in them, to help disambiguate in such cases.
Reported-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Checking for newer versions always requires going out to
lore.kernel.org, so force nocache operation.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
Many lore.kernel.org operations can be repeated within quick succession
of each-other (e.g. someone reruns a query with -t). This commit adds a
caching layer that keeps lookups in local cache for 10 minutes
(default). It can be made longer or shorter by editing the
'cache-expire' setting, or running "b4 am" with -C,--no-cache.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|
|
This is the beginning of a new tool that inherits from get-lore-mbox and
attest-patches.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
|