aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-04-15emacs: Fix search filtering of a global search ("*")Carl Worth
With the recent addition of "*" being a special case for a search matching all messages, we have to take care when doing a filter operation. In this case it's not legal to simply append and get: * and <some-new-search-terms> Instead we carefully construct a new search string of only: <some-new-search-terms> This could all be avoided if we had a parser that could understand "*" with the meaning we want.
2010-04-15TODO: Add two tasks that both have to do with auditing the library APICarl Worth
It was noted today in IRC that libnotmuch is not yet careful about wrapping all Xapian calls with try/catch blocks to print nicer error messages. It seems it would be natural to audit that at the same time as doing the symbol-hiding work.
2010-04-15RELEASING: Change wording of libnotmuch version instructionCarl Worth
We actually want this version to be incremented by the commits that extend the interface. So the release process really is not to just verify two things (NEWS and libnotmuch version), then run "make VERSION=x.y release", and send the mail. Quite nice.
2010-04-15make release: Enforce a clean source tree before release.Carl Worth
Where by clean, we check that no files are known to git to be modified.
2010-04-15RELEASING: Remove a meaningless step from the release process.Carl Worth
The entire "make sure the code you want is in place" thing is part of a larger release process that we don't document here at all. Instead, we just focus here on the mechanics of pushing things out once the larger process has determined the code is ready. And the fewer steps there are, the better, (for making the release-process as painless as possible and for avoiding any mistakes).
2010-04-15configure: Fix syntax error (spaces in assignment).Gregor Hoffleit
Before and after the assignment operator, no spaces are allowed. I don't know if there are any /bin/sh which allow spaces, but at least in bash, csh and zsh, the former code was no valid assigment.
2010-04-15Fix typo in messageBen Gamari
2010-04-15make release: Provide a kinder message when VERSION is forgotten.Carl Worth
I'm unlikely to always remember to pass VERSION=X.Y so it's nice for make release to remind me.
2010-04-15Makefile: Re-order the commands in "make release" slightly.Carl Worth
We put verify-version as a dependency, not a recursive action to keep its output clean, (I know that I will always type "make release" instead of "make VERSION=X.Y release" so I want a nice, neat reminder). Also, put the various ssh-based commands together, and after the build, (so that it doesn't ask for a password/passphrase both before and after building).
2010-04-15Makefile: Simplify the release targets.Carl Worth
Previously, we had a separate release-upload target that a user might mistake as something useful to call directly, (which would have the undesired effect or uploading a new package, but without first making all the checks that we want). So we eliminate that target, (folding its actions into "make release"), and we also rename the several release-verify-foo targets to simply verify-foo. This leaves as the only targets with "release" in the name as "release" and "release-message". Both of these are intended for the user to call directly.
2010-04-15Makefile.local: Fix typo in comment.Carl Worth
Just an extra word that clearly didn't belong.
2010-04-15RELEASING: Remove obsolete step about updating micro version number.Carl Worth
We've now changed to using "git describe" to automatically report a version number that changes with every git commit. So we no longer need to manually update anything in the Makefile during the release process.
2010-04-15Makefile: Make "make release" run the test suite.Carl Worth
This drops one manual step from our release process, (helping to ensure we don't forget anything during the release).
2010-04-15make test: Actually count and report on failures.Carl Worth
Hurrah---no more manual verification of that PASS column. This means that "make test" can actually be a useful part of the release process now, (since it will exit with non-zero status if there are any failures).
2010-04-15test: Unify all tests to use the pass_if_equal function.Carl Worth
Previously some tests (dump/restore) were doing ad-hoc verification of values and their own printing of PASS/FAIL, etc. This made it impossible to count test pass/fail rates in a single place. The only reason these tests were written that way was because the old execute_expecting function only worked if one could directly test the stdout output of a notmuch command. The recent switch to pass_if_equal means that all tests can use it.
2010-04-15test: Align the PASS/FAIL column.Carl Worth
Just to make things a little more pleasant to look at.
2010-04-15Makefile: Add a "make test" target.Carl Worth
I just wasted far too much time looking for a bug that wasn't actually there only because I hadn't recompiled before running the test suite. Now we can take advantage of actual dependency information to force a rebuild for "make test".
2010-04-15lib: search_threads: Fix nested search to handle original search of "*"Carl Worth
When constructing a thread, we usually run a nested query to find all messages in the thread that match the original search string. However, we need to have special-case handling of an original search string of "*" now that that is a supported means of specifying all messages. The special-case ends up bein quite simple---we do less work, (just skipping the nested search since we know that all messages must match). I had been wanting to write this identical code to more efficiently handle "notmuch search thread:<foo>" which was previously running two identical searches. So that case is now more efficient as well.
2010-04-15test: Add a test for "notmuch search '*'"Carl Worth
This feature was added recently and should have gotten a new test at the time. As this test demonstrates, the code is broken, ("notmuch search '*' returns bogus dates of the Unix epoch for any threads where the term "and" does not appear in any messages).
2010-04-15test: Use an older date for the generated messages.Carl Worth
Using a date in the current year makes the test suite fragile since the search output will include a date of "January 05" for now, but will start doing "2010-01-05" in the future.
2010-04-15test: Remove test-message filenames from generated messagesCarl Worth
The filenames aren't predictable (including the current directory) nor stable from one run to the next (including the PID). This makes it hard to predict the output from a search command that returns such a message (such as "*"). The original goal was simply to ensure that each generated message was distinguishable somehow. So just use the message counter instead.
2010-04-15test: Disentangle execution of notmuch from the examination of the results.Carl Worth
The old execute_expecting function was doing far too much for its own good. One of the worst aspects of this was that it introduced shell-quoting challengers where the caller could not easily control the precise invocation of the command to be executed. I personally couldn't find a way to test "notmuch search '*'" without the shell expanding * against files in the current directory, or having bogus quotation marks appearing in the search string, (defeating the recognition of "*" as a special search term). Hopefully this aspect of the test suite will be much easier to maintain now.
2010-04-15TODO: Add some ideas for improving the emacs interface.Carl Worth
One of these is a bad bug I noticed this morning, (archiving messages I had never read when going through a search of "tag:inbox and tag:to-me" and hitting space bar). The other ideas came from recent conversations with Dirk and Eric.
2010-04-15TODO: Add some ideas about better search syntaxCarl Worth
Recent coding around the "*" feature suggests some improvements that we could make, (some of which might push us into writing a custom query parser rather than using the one that exists in Xapian).
2010-04-14Merge bugfix for test-suite correctness.Carl Worth
The test suite was recently broken, and subsequently fixed (at the commit that introduced the breakage). This merges that fixup commit: f1776f8b51013bb66eb21e64c8084ddfe73c3a5c
2010-04-14test: Fix reply tests to track insignificant change in output.Carl Worth
The recent fix to properly decode encoded headers made the expected output of "notmuch reply" differ by a single space, (previously, there were two spaces before the References: value and now there is just one). Fix the test suite so that these are all noted as correct results again.
2010-04-14Makefile: Fix final linking of notmuch binary for OS X.Carl Worth
Apparently the OS X linker can't resolve symbols when linking a program (notmuch) against a library (libnotmuch) when the library depends on another library (libgmime) that the program doesn't depend on directly. For this case, we need to link the program directly against both libraries, but we don't want to do this on Linux, where the linker can do this on its own and the explicit, unneeded link would cause problems.
2010-04-14Makefile: Add library version information on OS X.Carl Worth
This encodes the library version into the library, where the linking binary can pick it up, and the linker can even enforce mismatches in the minor release, (such as linking a binary against version 1.2 and then attempting to run it against version 1.1).
2010-04-14Makefile: Fix library linking command for OS XCarl Worth
I'm not sure which system Aaron used, but on the machine I have access to, (Darwin 8.11.0), the -shared and -dylib_install_name options are not recognized. Instead I use -dynamic_lib and -install_name as documented here: http://www.finkproject.org/doc/porting/shared.php
2010-04-14Add infrastructure for building shared library on OS X.Aaron Ecay
This patch adds a configure check for OS X (actually Darwin), and sets up the Makefiles to build a proper shared library on that platform. Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-14Makefile: Move compat sources from the client code to the library.Carl Worth
Since the library code needs these as well.
2010-04-14Add simplistic reimplementation of strcasestr to compat libraryDirk Hohndel
While all systems that I have access to support strcasestr, it is in fact not part of POSIX. So here's a fallback reimplementation based on POSIX functions. Signed-off-by: Dirk Hohndel <hohndel@infradead.org> Tested-by: Tomas Carnecky <tom@dbservice.com> (on OpenSolaris snv_134)
2010-04-14Makefile: Move include of Makefile.config up from Makefile.localCarl Worth
The recent change to include sub-directory Makefile.local files before the top-level Makefile.local means that we need to include the Makefile.config before those. So move it up from Makefile.local to Makefile.
2010-04-14Fix up Makefile for build.Aaron Ecay
Must set extra_c(xx)flags before including subdir Makefile.local's, so that there is a blank slate that the subdirs can add on to. Must include subdir Makefile.local's before global one, otherwise the compat sources are not added to the list of those to be compiled. Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-14Use C++ compiler to link notmuch binariesAaron Ecay
Since the binaries contain C++ code, it is necessary to use the C++ linker, or errors result on some platforms (OS X). Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-14Clean up code duplication in adding or removing tag by region.Jesse Rosenthal
Clean up code duplication, as per Carl's suggestion, by making notmuch-search-{add/remove}-tag-thread a special case of the -region commands, where the region in question is between (point) and (point).
2010-04-14Fix bug in adding or removing tag by region.Jesse Rosenthal
There was a bug in notmuch-search-{add,remove}-tag-region, which would not behave correctly if the region went beyond the last message. Now, instead of simply iterating to the last line of the region, these functions will iterate to the minimum of the last line of the region and the last possible line, i.e. (- (line-number-at-pos (point-max)) 2) Tested-by: Carl Worth <cworth@cworth.org> Note that the old, buggy behavior included infinite loops of emacs lisp code, so the new behavior is significantly better than that.
2010-04-13TODO: Capture some recent ideas expressed on the mailing list.Carl Worth
There's a potential simplification of notmuch-reply.c and some emacs improvements that might require extending message-mode to a notmuch-message-mode.
2010-04-13Decode headers in replyMichal Sojka
When headers contain non-ASCII characters, they are encoded according to rfc2047. Nomtuch reply command emits the headers in the encoded form, which makes them hard to read by humans who compose the reply. For example instead of "Subject: Re: Rozlučka" one currently sees "Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=". This patch adds a new GMime filter which is used to decode headers to UTF-8 and uses this filter when notmuch reply outputs headers. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
2010-04-13notmuch.el: quote args in notmuch-show to facilitate remote useJesse Rosenthal
Put single-quotes around the argument of the `show --entire-thread' command in notmuch-show. This change should have no effect on normal usage. However, it allows us to use the notmuch.el client with a remote notmuch binary and database over ssh (by, e.g., setting `notmuch-command' to a simple shell script). Without the quotes, ssh will not send the command properly. One very simple example script is as follows. (Note that it requires keypair login to the ssh server.) #!/bin/sh SSH_BIN="/path/to/local/ssh" NOTMUCH_HOST="my.remote.server" NOTMUCH_REMOTE_PATH="/path/to/remote/notmuch" $SSH_BIN $NOTMUCH_HOST $NOTMUCH_REMOTE_PATH $@
2010-04-13TODO: Note GMime bug that needs to be tested and upstreamed.Carl Worth
This bug was recently noted in a commit message, so we should hold onto it until we've passed it along to the GMime project.
2010-04-13Do not segfault on empty mime partsmartin f. krafft
notmuch previously unconditionally checked mime parts for various properties, but not for NULL, which is the case if libgmime encounters an empty mime part. Upon encounter of an empty mime part, the following is printed to stderr (the second line due to my patch): (process:17197): gmime-CRITICAL **: g_mime_message_get_mime_part: assertion `GMIME_IS_MESSAGE (message)' failed Warning: Not indexing empty mime part. This is probably a bug that should get addressed in libgmime, but for not, my patch is an acceptable workaround. Signed-off-by: martin f. krafft <madduck@madduck.net>
2010-04-13Prevent data loss caused by SIGINT during notmuch newMichal Sojka
When Ctrl-C is pressed in a wrong time during notmuch new, it can lead to removal of messages from the database even if the files were not removed. It happened at least once to me. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
2010-04-13Fix typo in notmuch.h documentation regarding database open modesMichael Forney
Reviewed-by: Carl Worth <cworth@cworth.org>: The original proposal for having different open modes used the name WRITABLE. I didn't like that name, (easy to misspell as WRITEABLE even for native English speakers). So we renamed it to READ_WRITE immediately, but apparently some of the documentation held the old name for a while.
2010-04-13TODO: Make an explicit note that we need to start testing --format=jsonCarl Worth
The recent fix to handle utf8 in the JSON output is the kind of bug I'd never like to see again, (so that I'd like the test suite to be helping us track that).
2010-04-13Fix json_quote_str to handle non-ASCII charactersGregor Hoffleit
The current code in json_quote_str() only accepts strict printable ASCII code points (i.e. 32-127), all other code points are dropped from the JSON output. The code is attempting to drop only non-printable ASCII characters, but doing a signed comparison of the byte value is also dropping characters with values >= 128. This patch uses an unsigned comparison to accept code points 32-255. Reviewed-by: Carl Worth <cworth@cworth.org> (with some additional details for commit message).
2010-04-13TODO: Note several changes we want to make to the database schema.Carl Worth
Since database upgrades can be fairly painful, we'll want to do all of these within a single release.
2010-04-12lib: Remove condition regarding a NULL parent_thread_id.Carl Worth
A recent change guaranteed that a message ID can never be resolved to a NULL thread ID, so we don't need this extra case.
2010-04-12lib: Always add reference terms to the database.Carl Worth
Previously, we were only adding the reference terms for cases where the referenced message did not yet exist in the database. For thread presentation, it's useful to have the connection information provided by the references, even when the messages are present. So add this term unconditionally.
2010-04-12lib: Document the metadata stored within the Xapian database.Carl Worth
We are currently storing "version", "last_thread_id", and "thread_id_*" values so document how each of these are used.