notmuch clon
Find a file
Austin Clements cddc270346 Record dependencies during build instead of before
Previously, the makefile created dependency files in a separate, first
pass.  In particular, include-ing the dependency files would cause
make to attempt to rebuild those files using the dependency-generation
rules in the makefile.  Unfortunately, this approach required obtuse
rules and silently delayed the start of the build process (by quite a
bit on a clean tree without any dependency files).  Worse, this
required the dependency files to themselves depend on all of the
headers the source file depended on, which meant that, if a header
file was removed, the depedency file could not be updated because of a
missing dependency (!), which would cause make to silently fail.

This patch eliminates the dependency generation rules and instead
generates dependency files as a side-effect of the regular build rule.
On the first build, we don't need to know the dependencies beforehand;
the object file doesn't exist, so it will be built anyway.  On
subsequent builds, if a header file is updated, the dependency rules
generated by the previous build will force a rebuild.  If a source
file is updated, the dependency rules may be stale, but it doesn't
matter because the updated source file will force a rebuild.

In the final case above, the stale dependency rules may refer to a
header file that no longer exists but is also no longer needed.  In
order to prevent this from breaking the build, we also pass gcc the
-MP option, which generates phony targets for every depended-on header
file, so make won't complain if it can't find them during a later
build.
2012-04-15 09:42:15 -03:00
bindings update version to 0.12 2012-03-19 22:28:17 -03:00
compat Silence buildbot warnings about unused results 2012-01-21 08:49:50 -04:00
completion fix sum moar typos [build scripts, Makefiles] 2011-06-23 15:44:59 -07:00
contrib notmuch-mutt: fix typo in manpage 2012-03-31 11:33:45 -03:00
debian debian: add gnupg-agent to notmuch recommends 2012-04-12 08:44:38 -03:00
devel Sync schemata with current code structure 2012-04-15 09:42:14 -03:00
emacs emacs: have tag-completion return all tags for nil input 2012-04-12 15:34:49 -03:00
lib lib: change default for notmuch_query_set_omit_excluded 2012-04-07 22:58:33 -03:00
man cli: move show to the new --exclude= option naming scheme. 2012-04-07 23:05:56 -03:00
packaging fix sum moar typos [text files] 2011-06-23 15:40:50 -07:00
test emacs: get rid of trailing spaces in notmuch-hello view 2012-04-12 08:40:33 -03:00
util Fix dependency generation for compat, test, and util 2012-01-19 09:19:12 -04:00
vim vim: fix citation/signature fold lengths 2011-07-16 21:57:38 +03:00
.dir-locals.el .dir-locals.el: changed one-char comment prefix '; ' to two; '; ; ' 2012-01-22 08:41:37 -04:00
.gitignore fix .gitignore for gzipped man pages 2012-01-17 14:52:31 -04:00
AUTHORS Drop date.c file, (use identical function from GMime instead). 2009-11-02 14:36:33 -08:00
command-line-arguments.c cli: Parsing. Allow true/false parameter for boolean options. 2012-03-18 09:14:22 -03:00
command-line-arguments.h command-line-arguments.[ch]: make arrays of keyword descriptors const 2011-12-13 00:00:44 -04:00
configure configure: change gmime version in help message to 2.6 2012-04-05 08:01:32 -03:00
COPYING Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
COPYING-GPL-3 Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
debugger.c notmuch-new: Only install SIGALRM if not running under gdb 2009-11-22 05:36:36 +01:00
gmime-filter-headers.c notmuch: Fix off-by-one errors if a header is >200 characters long. 2010-06-01 16:09:29 -07:00
gmime-filter-headers.h fix sum moar typos [comments in source code] 2011-06-23 15:58:39 -07:00
gmime-filter-reply.c Filter out carriage-returns in show and reply output. 2009-11-18 23:34:43 +01:00
gmime-filter-reply.h Typsos 2009-11-18 03:21:36 -08:00
hooks.c cli: introduce the concept of user defined hooks 2011-12-11 13:57:31 -04:00
INSTALL Update NEWS and INSTALL about gmime 2.6 2012-01-21 08:55:08 -04:00
json.c json_quote_chararray: Always return a newly talloced array 2010-04-20 08:55:31 -07:00
Makefile build-system: update for split man pages 2011-12-31 15:16:32 -04:00
Makefile.local Record dependencies during build instead of before 2012-04-15 09:42:15 -03:00
mime-node.c Handle errors in mime_node_open 2012-03-10 21:25:19 -04:00
NEWS News for raw format changes 2012-04-12 08:46:44 -03:00
notmuch-client.h show: Remove unused fields from notmuch_show_format 2012-04-15 09:42:15 -03:00
notmuch-config.c Make exclusion visible again 2012-03-03 11:56:47 -04:00
notmuch-count.c cli: move count to the new --exclude=(true|false|flag) naming scheme. 2012-04-07 23:05:18 -03:00
notmuch-dump.c notmuch-dump: convert to command-line-arguments 2011-12-08 20:24:24 -04:00
notmuch-new.c add support for user-specified files & directories to ignore 2012-02-17 08:04:34 -04:00
notmuch-reply.c reply: Move reply citation printing to the recursive MIME walk 2012-03-31 08:17:55 -03:00
notmuch-restore.c cli: refactor "notmuch restore" message tagging into a separate function 2012-03-30 21:22:44 -03:00
notmuch-search.c cli: move search to the new --exclude= naming scheme. 2012-04-07 23:05:41 -03:00
notmuch-setup.c Make exclusion visible again 2012-03-03 11:56:47 -04:00
notmuch-show.c show: Remove empty message_set_{start,sep,end} fields 2012-04-15 09:42:15 -03:00
notmuch-tag.c cli: refactor "notmuch tag" query tagging into a separate function 2012-03-30 21:22:31 -03:00
notmuch-time.c Add some const correctness to talloc 'ctx' parameter. 2009-11-17 19:10:37 -08:00
notmuch.c notmuch: replace built-in help with exec of man 2011-12-31 15:16:32 -04:00
notmuch.desktop notmuch.desktop: Clarify that this is the emacs interface to notmuch. 2010-01-24 07:30:08 +13:00
query-string.c notmuch: Break notmuch.c up into several smaller files. 2009-11-10 12:03:05 -08:00
README INSTALL/README: Clean up the description of how to run the emacs interface. 2010-06-01 10:51:42 -07:00
version update version to 0.12 2012-03-19 22:28:17 -03:00

Notmuch - thread-based email index, search and tagging.

Notmuch is a system for indexing, searching, reading, and tagging
large collections of email messages in maildir or mh format. It uses
the Xapian library to provide fast, full-text search with a convenient
search syntax.

Notmuch is free software, released under the GNU General Public
License version 3 (or later).

Building notmuch
----------------
See the INSTALL file for notes on compiling and installing notmuch.

Running notmuch
---------------
After installing notmuch, start by running "notmuch setup" which will
interactively prompt for configuration information such as your name,
email address, and the directory which contains your mail archive to
be indexed. You can change any answers later by running "notmuch
setup" again or by editing the .notmuch-config file in your home
directory.

With notmuch configured you should next run "notmuch new" which will
index all of your existing mail. This can take a long time, (several
hours) if you have a lot of email, (hundreds of thousands of
files). When new mail is delivered to your mail archive in the future,
you will want to run "notmuch new" again. These runs will be much
faster as they will only index new messages.

Finally, you can prove to yourself that things are working by running
some command-line searches such as "notmuch search
from:someone@example.com" or "notmuch search subject:topic". See
"notmuch help search-terms" for more details on the available search
syntax.

The command-line search output is not expected to be particularly
friendly for day-to-day usage. Instead, it is expected that you will
use an email interface that builds on the notmuch command-line tool or
the libnotmuch library.

Notmuch installs a full-featured email interface for use within
emacs. To use this, first add the following line to your .emacs file:

	(require 'notmuch)

Then, either run "emacs -f notmuch" or execute the command "M-x
notmuch" from within a running emacs.

If you're interested in a non-emacs-based interface to notmuch, then
please join the notmuch community. Various other interfaces are
already in progress, (an interface within vim, a curses interface,
graphical interfaces based on evolution, and various web-based
interfaces). The authors of these interfaces would love further
testing or contribution. See contact information below.

Contacting users and developers
-------------------------------
The website for Notmuch is:

	http://notmuchmail.org

The mailing list address for the notmuch community is:

	notmuch@notmuchmail.org

We welcome any sort of questions, comments, kudos, or code there.

Subscription is not required, (but if you do subscribe you'll avoid
any delay due to moderation). See the website for subscription
information.

There is also an IRC channel dedicated to talk about using and
developing notmuch:

	IRC server:	irc.freenode.net
	Channel:	#notmuch