Commit graph

6320 commits

Author SHA1 Message Date
Daniel Kahn Gillmor
aa605f7e8a cli/show: enable --decrypt=stash
Add fancy new feature, which makes "notmuch show" capable of actually
indexing messages that it just decrypted.

This enables a workflow where messages can come in in the background
and be indexed using "--decrypt=auto".  But when showing an encrypted
message for the first time, it gets automatically indexed.

This is something of a departure for "notmuch show" -- in particular,
because it requires read/write access to the database.  However, this
might be a common use case -- people get mail delivered and indexed in
the background, but only want access to their secret key to happen
when they're directly interacting with notmuch itself.

In such a scenario, they couldn't search newly-delivered, encrypted
messages, but they could search for them once they've read them.

Documentation of this new feature also uses a table form, similar to
that found in the description of index.decrypt in notmuch-config(1).

A notmuch UI that wants to facilitate this workflow while also
offering an interactive search interface might instead make use of
these additional commands while the user is at the console:

Count received encrypted messages (if > 0, there are some things we
haven't yet tried to index, and therefore can't yet search):

     notmuch count tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure

Reindex those messages:

     notmuch reindex --try-decrypt=true tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure
2018-05-26 07:43:30 -07:00
Daniel Kahn Gillmor
9d114a8552 test-lib: add notmuch_show_part for "notmuch show --format=text"
Thanks to David Bremner for this improved readability!
2018-05-26 07:42:28 -07:00
Daniel Kahn Gillmor
808cababbb cli/show: reindex when we learned new session keys about a message
If the number of session keys for a given message increased after
running "notmuch show" then we just learned something new that might
let us do automatic decryption.  We should reindex this message using
our newfound knowledge.

Amended by db: add previously discussed #if block
2018-05-26 07:39:54 -07:00
Daniel Kahn Gillmor
bc842bfff1 cli: write session keys to database, if asked to do so
If the decryption policy is NOTMUCH_DECRYPT_TRUE, that means we want
to stash session keys in the database.  Note that there is currently
no way from the command line to set it this way, though, so it is not
yet included in the test suite.
2018-05-26 07:33:01 -07:00
Daniel Kahn Gillmor
f32e52448b cli: add print_status_message()
This function is a parallel to print_status_query() or
print_status_database().  Thanks to David Bremner for the suggestion!
2018-05-26 07:32:14 -07:00
Daniel Kahn Gillmor
6a9f26b4a0 lib: make notmuch_message_get_database() take a const notmuch_message_t*
This is technically an API change, but it is not an ABI change, and
it's merely a statement that limits what the library can do.

This is in parallel to notmuch_query_get_database(), which also takes
a const pointer.
2018-05-26 07:32:01 -07:00
Daniel Kahn Gillmor
499bb78178 properties: add notmuch_message_count_properties
The user can already do this manually, of course, but (a) it's nice to
have a convenience function, and (b) exposing this interface means
that someone more clever with a _notmuch_string_map_t than i am can
write a more efficient version if they like, and it will just
accelerate the users of the convenience function.
2018-05-26 07:31:39 -07:00
David Bremner
4a6371f1d8 lib: bump minor version
This recognizes the addition of (at least)
notmuch_message_get_database to the API.
2018-05-26 07:31:27 -07:00
Daniel Kahn Gillmor
9088db76d8 lib: expose notmuch_message_get_database()
We've had _notmuch_message_database() internally for a while, and it's
useful.  It turns out to be useful on the other side of the library
interface as well (i'll use it later in this series for "notmuch
show"), so we expose it publicly now.
2018-05-26 07:30:32 -07:00
David Bremner
8a1eeecdfe doc: document notmuch new --full-scan 2018-05-22 09:31:33 -07:00
David Bremner
84b2963726 test: use --full-scan in T050-new.sh
Wherever the test relies on directories being scanned, this option
should be used to avoid skipping them due to mtimes on directories
matching the database.
2018-05-22 09:29:59 -07:00
David Bremner
d1acff6153 test: add tests for notmuch new --full-scan
Most of these just check that adding the flag does not break existing
functionality. The one test that does check the full-scan
functionality had to be rewritten to output debugging info.
2018-05-22 09:29:48 -07:00
David Bremner
1c62e6d3a0 CLI/new: add full-scan option
By default notmuch-new uses directory mtimes to optimize the scanning of
directories for new mail. This option allows turning that optimization
off e.g. for testing or debugging.
2018-05-22 09:29:36 -07:00
David Bremner
51f3a0786f bindings: clean extra file created by ruby extension build system
Noticed by dkg; this file seems to be created by building the debian
package, and perhaps by other distro package builds.
2018-05-14 22:18:18 -03:00
David Bremner
1883ab6650 drop use of register keyword
The performance benefits are dubious, and it's deprecated in C++11.
2018-05-14 22:18:05 -03:00
Thomas Schneider
b2e4778ea4 build: Allow user to specify ruby executable
This way, one can build for a different Ruby than $PATH/ruby
(e. g. different versions, or Ruby in other paths).

Signed-off-by: Thomas Schneider <qsx@chaotikum.eu>
2018-05-10 21:01:06 -03:00
David Bremner
a07b28a488 doc: fix notmuch-search example
For some reason the searched tag did not match the displayed results.
2018-05-09 10:31:57 -04:00
David Bremner
f2e6f76a04 doc: document thread subqueries
Mention both performance and quoting issues.
2018-05-07 08:42:53 -03:00
David Bremner
f0131af6c5 lib: define specialized get_thread_id for use in thread subquery
The observation is that we are only using the messages to get there
thread_id, which is kindof a pessimal access pattern for the current
notmuch_message_get_thread_id
2018-05-07 08:42:53 -03:00
David Bremner
60fcec82d2 perf-test: add simple test for thread subqueries
This is not a particularly sensible query, but thread:{date:2010} is a
good way to generate fairly large intermediate queries.
2018-05-07 08:42:53 -03:00
David Bremner
5ad39ebf75 lib: add thread subqueries.
This change allows queries of the form

 thread:{from:me} and thread:{from:jian} and not thread:{from:dave}

This is still somewhat brute-force, but it's a big improvement over
both the shell script solution and the previous proposal [1], because it
does not build the whole thread structure just generate a
query. A further potential optimization is to replace the calls to
notmuch with more specialized Xapian code; in particular it's not
likely that reading all of the message metadata is a win here.

[1]: id:20170820213240.20526-1-david@tethera.net
2018-05-07 08:42:53 -03:00
David Bremner
3a747e714c uploaded to unstable
-----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCAAdFiEE3VS2dnyDRXKVCQCp8gKXHaSnniwFAlru7eQACgkQ8gKXHaSn
 nizoGAv8CqDkdqWcDU7LT8az9BFNxeohEsXskx8gYnZSVutIQEBEfj9dKyr7t7JW
 nVz3NpOcQdsNUkafxsaezDoDDYYHlzNDN7uC0MNYipEfV6bXLaQcQ7M6SBuIjKsD
 azDNu24ar0n2qnmvd90CFSQbcIaFNACirq8wN81oMwvOkR8jC7qj8qPcqmcTmpWq
 PM146axbiTr72TPRa/w0AXUu/Q8DhKXnmvgLeJr13dNedoYRA8M7ITC1XA3tp8vT
 gxI+hSWZA3j2+GZPqwzd4SM1aOrC3VEfd1yj85M0/pXZ9HT7UzEe44YUTsyldQ6x
 MTPllr6yXYFcUJRwQJiX07g/tOJ/kmY5tAdPryPMRG0tG54Y1MOECUpj1NyWFC+s
 u6d4b7KDSwf0VonaDj0rLyEtgPQ8B+m1cJ4ixw6dinxpT710qzFABicLvfL2aqK9
 zx7IIjs8HBXdjz322tOajUTJs6qOCHQ9RXB0t9Q+KMhxGz5fBMATTmJnUInbNzVU
 f5Ujut67
 =bHZX
 -----END PGP SIGNATURE-----

Merge tag 'debian/0.26.2-2'

uploaded to unstable
2018-05-06 09:00:02 -03:00
David Bremner
55710e16fd debian: re-enable gdb in tests on s390x, ppc64el, armel, mipsel
I was able to verify these 4 arches on Debian porterboxes
2018-05-06 08:38:26 -03:00
David Bremner
e9dcc51862 debian: mark dtach and gdb as <!nocheck>
These are only needed for the test suite. In addition to the
functional change, this also helps document their role as
build-dependencies.
2018-05-06 08:01:12 -03:00
Florian Klink
140e8fb118 T460-emacs-tree: sync $EXPECTED with test name
This syncs the $EXPECTED directory name with the tests filename.

Signed-off-by: Florian Klink <flokli@flokli.de>
2018-05-03 21:03:33 -03:00
Daniel Kahn Gillmor
c20a5eb805 move more http -> https
Correct URLs that have crept into the notmuch codebase with http://
when https:// is possible.

As part of this conversion, this changeset also indicates the current
preferred upstream URLs for both gmime and sup.  the new URLs are
https-enabled, the old ones are not.

This also fixes T310-emacs.sh, thanks to Bremner for catching it.
2018-05-03 20:59:20 -03:00
David Bremner
4ac23c5978 test: add known broken test for regexp search of second subject
We expect this to give the same answer as the non-regexp subject
search. It does not because the regexp search relies on the value
slot, which currently contains only one subject.
2018-05-03 07:44:49 -03:00
David Bremner
f3f4297c7f test: tests for python bindings get_property / get_properties
These roughly replicate the equivalent C tests, although they rely on
the database state created by the former tests, since the python
bindings currently provide read-only access to properties.
2018-05-02 20:30:51 -03:00
Ruben Pollan
5e05f00fe5 python: add bindings for notmuch_message_get_propert(y/ies)
Message.get_property (prop) returns a string with the value of the property and
Message.get_properties (prop, exact=False) yields key, value pairs
2018-05-02 20:16:11 -03:00
David Bremner
9e158fb694 Merge branch 'release' 2018-04-28 08:45:59 -03:00
David Bremner
a08c36417f build: push additional refs during release
These currently have to be pushed by hand during a release, which
isn't a big deal, but is one more thing to remember.
2018-04-28 08:34:48 -03:00
David Bremner
d17855dd0b debian: finalize changelog 2018-04-28 08:11:27 -03:00
David Bremner
ab9622c199 NEWS: set release date 2018-04-28 08:06:56 -03:00
David Bremner
388edce0b7 Merge branch 'release'
minimal mset fix, for 0.26.2
2018-04-26 22:47:40 -03:00
David Bremner
15d50a784f debian: changelog for 0.26.2-1 2018-04-26 22:42:39 -03:00
David Bremner
d582f3277e travis: disable gdb based tests
Apparently something broke with gdb on travis.

(cherry picked from commit 12541fea7f)
2018-04-26 22:33:42 -03:00
David Bremner
ed04c07889 version: bump to 0.26.2 2018-04-26 22:28:45 -03:00
David Bremner
cc8b6b747d NEWS: news item for mset fix 2018-04-26 22:15:11 -03:00
David Bremner
64831e8016 lib: work around xapian bug with get_mset(0,0, x)
At least Fedora28 triggers this Xapian bug due to some toolchain change .

   https://bugzilla.redhat.com/show_bug.cgi?id=1546162

The underlying bug is fixed in xapian commit f92e2a936c1592, and
should be fixed in Xapian 1.4.6
2018-04-26 22:14:59 -03:00
David Bremner
963ccabe93 Merge branch 'release'
reference loop fixes to be included in 0.26.2
2018-04-25 17:36:32 -03:00
David Bremner
15aaa41ce2 NEWS: add item for reference loop fix. 2018-04-25 17:32:48 -03:00
David Bremner
20ba0b7dfa doc: add a section on quoting to notmuch-search-terms(7)
I think we've diverged enough from the Xapian query parser
that we can't rely on that syntax description [1]. As far as I can
tell, [1] also only discusses quotes in the context of phrases.

[1]: https://xapian.org/docs/queryparser.html
2018-04-24 23:08:10 -03:00
David Bremner
e8ac065a50 test: re-enable disabled test in T700-reindex.sh
The extra test_done looks like a typo
2018-04-24 22:59:21 -03:00
Martin Michlmayr
b4767dd622 NEWS: Fix typos 2018-04-24 22:59:04 -03:00
David Bremner
491b1f4b40 lib: choose oldest message when breaking reference loops
This preserves a sensible thread order
2018-04-23 23:00:20 -03:00
David Bremner
4e085b6d92 test: add known broken test for thread ordering from a loop
The previous loop handling code chooses the last message in the
message list, which turns out to be the last in date order.
See the comment in _notmuch_thread_create.
2018-04-23 23:00:20 -03:00
David Bremner
9293d6da27 lib: break reference loop by choosing arbitrary top level msg
Other parts of notmuch (e.g. notmuch show) expect each thread to
contain at least one top level message, and crash if this expectation
is not met.
2018-04-20 11:23:31 -03:00
David Bremner
ab55ca8e0a test: add known broken test for indexing an In-Reply-To loop.
This documents the bug discussed in

     id:87d10042pu.fsf@curie.anarc.at
2018-04-20 11:23:31 -03:00
David Bremner
044cbd920c test: two new messages for the 'broken' corpus
These have an 'In-Reply-To' loop, which currently confuses "notmuch
new".
2018-04-20 11:23:31 -03:00
David Bremner
5d510221d1 Merge branch 'release' 2018-04-07 17:43:01 -03:00