<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib, branch feature/git-remote</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=feature%2Fgit-remote</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=feature%2Fgit-remote'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2025-08-09T11:19:43Z</updated>
<entry>
<title>lib/config: add config keys for git-remote-notmuch.</title>
<updated>2025-08-09T11:19:43Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2024-10-12T00:58:41Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=de97e0cbdbf48bd5f7576ca0107c1e8542277cdf'/>
<id>urn:sha1:de97e0cbdbf48bd5f7576ca0107c1e8542277cdf</id>
<content type='text'>
The precise function will be explained in a future update to
notmuch-config(1).
</content>
</entry>
<entry>
<title>lib: return NOTMUCH_STATUS_OPERATION_INVALIDATED where appropriate</title>
<updated>2025-08-09T10:12:23Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-08-06T05:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=aa761727999b105711ba4ca789e0836a0a05cf9f'/>
<id>urn:sha1:aa761727999b105711ba4ca789e0836a0a05cf9f</id>
<content type='text'>
The overall goal is to allow clients to restart operations in
situations where that is the response recommended by the underlying
Xapian library.

Amended-by: db, added above explanation
</content>
</entry>
<entry>
<title>lib/database-private: undef XAPIAN_DEPRECATED before redefining it</title>
<updated>2025-08-04T13:44:52Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-27T14:11:47Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bee7a53194606757997f069f0e95ac862fbba0e0'/>
<id>urn:sha1:bee7a53194606757997f069f0e95ac862fbba0e0</id>
<content type='text'>
Silences compiler warnings about redefining a macro.
</content>
</entry>
<entry>
<title>lib: add notmuch_threads_status()</title>
<updated>2025-08-04T13:43:35Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-28T14:26:56Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=11d373b4fd05f5409bf5c49459fe141d2235f7f5'/>
<id>urn:sha1:11d373b4fd05f5409bf5c49459fe141d2235f7f5</id>
<content type='text'>
While a number of errors can happen when iterating over threads
(DatabaseModifiedError, memory allocation errors, etc.), the API
currently cannot signal them to the caller, and either triggers an
internal error (aborting the caller) or returns NULL from
notmuch_threads_get() with no information on what actually went wrong.

Add a new public function notmuch_threads_status() - similar to
previously added notmuch_messages_status() - that allows propagating
those errors to the caller.

Use this to remove the INTERNAL_ERROR() in _notmuch_thread_create()
(triggered by T642).

Fixes: https://github.com/pazz/alot/issues/1460

Amended-By: db. Resolved whitespace disagreement between emacs and
uncrustify in favour of uncrustify.
</content>
</entry>
<entry>
<title>lib/config: simplify cleanup in notmuch_database_get_config_list()</title>
<updated>2025-08-04T13:15:38Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-27T14:11:44Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=2e87a00f3909e7f5ddd3b51230d8b9483efbf380'/>
<id>urn:sha1:2e87a00f3909e7f5ddd3b51230d8b9483efbf380</id>
<content type='text'>
The list destructor is always set when necessary (i.e. if the iterator
is successfully created), so there is never a need to invoke it
explicitly, even on failure.
</content>
</entry>
<entry>
<title>lib: handle DatabaseModifiedError in _notmuch_message_create</title>
<updated>2025-07-24T10:30:58Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-07T12:27:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=f375ea1add121c428f261473512831a169dfe335'/>
<id>urn:sha1:f375ea1add121c428f261473512831a169dfe335</id>
<content type='text'>
If an open database is modified sufficiently by other callers, the open
instance becomes invalid and operations on it throw
DatabaseModifiedError. Per Xapian documentation, the caller is then
supposed to reopen the database and restart the query. This exception is
currently not handled in _notmuch_message_create(), leading to the
default handler abort()ing the process.

Catch this exception in _notmuch_message_create() and return an error
instead of crashing. Since the entire query becomes invalid - including
results that have already been read by the caller - this situation
cannot be handled by libnotmuch transparently. A new public function -
notmuch_messages_status() - is added to allow the callers to check
whether the messages iterator was exhausted or terminated early due to
a runtime error. This also allows memory allocation failure to be
signalled to the caller.

Amended-By: David Bremner &lt;david@tethera.net&gt;
            [replace use of notmuch_messages_valid]
</content>
</entry>
<entry>
<title>config: allow custom separators in author lists</title>
<updated>2024-07-26T06:59:11Z</updated>
<author>
<name>Lars Kotthoff</name>
<email>larsko@uwyo.edu</email>
</author>
<published>2023-12-22T21:06:34Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d34720e7b35da771d9a06ee8dbdc158680684e99'/>
<id>urn:sha1:d34720e7b35da771d9a06ee8dbdc158680684e99</id>
<content type='text'>
Allow distinguishing between commas separating authors and separating
first and last names.

Amended by db: reformat NEWS entry and commit message. Tweaked
whitespace in lib/thread.cc.
</content>
</entry>
<entry>
<title>lib: thread-safe s-expression query parser</title>
<updated>2024-07-25T10:15:02Z</updated>
<author>
<name>Kevin Boulain</name>
<email>kevin@boula.in</email>
</author>
<published>2023-08-27T12:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a1921a25b71b23335ac01db7fc2f5462bf5edd3a'/>
<id>urn:sha1:a1921a25b71b23335ac01db7fc2f5462bf5edd3a</id>
<content type='text'>
Follow-up of 6273966d, now that sfsexp 1.4.1 doesn't rely on globals
anymore by default (https://github.com/mjsottile/sfsexp/issues/21).

This simply defers the initial query generation to use the thread-safe
helper (xapian_query_match_all) instead of Xapian::Query::MatchAll.
</content>
</entry>
<entry>
<title>lib: clear error message on success in _choose_database_path</title>
<updated>2023-12-06T11:33:05Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2023-12-03T18:56:44Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=b97cd90040a8353e6f94c317af2020f3d6e67a2e'/>
<id>urn:sha1:b97cd90040a8353e6f94c317af2020f3d6e67a2e</id>
<content type='text'>
Previously we both found a database and returned a message saying that
the database could not be found (along with a success code). This
change should prevent spurious error output.
</content>
</entry>
<entry>
<title>lib/string_map: simulate stable sorting</title>
<updated>2023-11-28T13:19:21Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2023-11-25T12:33:52Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=4f82acce17ca51b03bea2abe3eefb7c3026138fe'/>
<id>urn:sha1:4f82acce17ca51b03bea2abe3eefb7c3026138fe</id>
<content type='text'>
qsort(3) does not promise stability, and recent versions of glibc have
been showing more unstable behaviour [2]. Michael Gruber observed [1] test
breakage due to changing output order for message properties.

We provide a sorting order of (key,value) pairs that _looks_ stable by
breaking ties based on value if keys are equal. Internally there may
be some instability in the case of duplicate (key,value) pairs, but it
should not be observable via the iterator API.

[1]: id:CAA19uiSHjVFmwH0pMC7WwDYCOSzu3yqNbuYhu3ZMeNNRh313eA@mail.gmail.com
[2]: id:87msv3i44u.fsf@oldenburg.str.redhat.com
</content>
</entry>
</feed>
