From 4a9c935373a221ddcd030392b864017ae7557c14 Mon Sep 17 00:00:00 2001 From: Mark Walters Date: Sat, 22 Feb 2014 23:57:48 +0000 Subject: [PATCH] Re: [PATCH v2 00/13] literal folder: prefix, new path: prefix --- 99/d3badcf8bd4c96c99a00d3fcf6e98c1fe925db | 389 ++++++++++++++++++++++ 1 file changed, 389 insertions(+) create mode 100644 99/d3badcf8bd4c96c99a00d3fcf6e98c1fe925db diff --git a/99/d3badcf8bd4c96c99a00d3fcf6e98c1fe925db b/99/d3badcf8bd4c96c99a00d3fcf6e98c1fe925db new file mode 100644 index 000000000..0190e9691 --- /dev/null +++ b/99/d3badcf8bd4c96c99a00d3fcf6e98c1fe925db @@ -0,0 +1,389 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id 18C92431FCF + for ; Sat, 22 Feb 2014 15:58:14 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: -1.098 +X-Spam-Level: +X-Spam-Status: No, score=-1.098 tagged_above=-999 required=5 + tests=[DKIM_ADSP_CUSTOM_MED=0.001, FREEMAIL_FROM=0.001, + NML_ADSP_CUSTOM_MED=1.2, RCVD_IN_DNSWL_MED=-2.3] autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id Ev3MPM-6NvIh for ; + Sat, 22 Feb 2014 15:58:10 -0800 (PST) +Received: from mail2.qmul.ac.uk (mail2.qmul.ac.uk [138.37.6.6]) + (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id BCCE9431FBF + for ; Sat, 22 Feb 2014 15:58:09 -0800 (PST) +Received: from smtp.qmul.ac.uk ([138.37.6.40]) + by mail2.qmul.ac.uk with esmtp (Exim 4.71) + (envelope-from ) + id 1WHMS7-0005UN-4z; Sat, 22 Feb 2014 23:58:05 +0000 +Received: from 93-97-24-31.zone5.bethere.co.uk ([93.97.24.31] helo=localhost) + by smtp.qmul.ac.uk with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.71) + (envelope-from ) + id 1WHMS6-0005lV-DG; Sat, 22 Feb 2014 23:57:51 +0000 +From: Mark Walters +To: Jani Nikula , notmuch@notmuchmail.org +Subject: Re: [PATCH v2 00/13] literal folder: prefix, new path: prefix +In-Reply-To: +References: +User-Agent: Notmuch/0.15.2+484~gfb59956 (http://notmuchmail.org) Emacs/23.4.1 + (x86_64-pc-linux-gnu) +Date: Sat, 22 Feb 2014 23:57:48 +0000 +Message-ID: <87wqgmya2r.fsf@qmul.ac.uk> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +X-Sender-Host-Address: 93.97.24.31 +X-QM-Geographic: According to ripencc, + this message was delivered by a machine in Britain (UK) (GB). +X-QM-SPAM-Info: Sender has good ham record. :) +X-QM-Body-MD5: 1aba6bf557d28e0c8cab03c9a81d0567 (of first 20000 bytes) +X-SpamAssassin-Score: 5.1 +X-SpamAssassin-SpamBar: +++++ +X-SpamAssassin-Report: The QM spam filters have analysed this message to + determine if it is + spam. We require at least 5.0 points to mark a message as spam. + This message scored 5.1 points. Summary of the scoring: + * 7.5 URIBL_BLACK Contains an URL listed in the URIBL blacklist + * [URIs: message.cc] + * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail + provider * (markwalters1009[at]gmail.com) + * 1.0 QM_RCVDURI_FREEMAIL Freemail from address with spammy link or + * relayed by spammy host + * -3.4 AWL AWL: From: address is in the auto white-list +X-QM-SPAM-Warning: Possibly +X-QM-Scan-Virus: ClamAV says the message is clean +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sat, 22 Feb 2014 23:58:14 -0000 + + +I have read most of this series, tested it and run the tests and LGTM +1. + +I read the C code fairly carefully, the tests rather less so but they +looked sane, and I didn't really look at patch 9 for building old +databases. + +Best wishes + +Mark + + + + +On Sat, 22 Feb 2014, Jani Nikula wrote: +> Hi all, this is v2 of id:cover.1389304779.git.jani@nikula.org. +> +> The new path: prefix is a literal boolean prefix matching the paths, +> relative from the maildir root, of the message files. There's no +> interpretation of the maildir special cur/new folders, but a recursive +> match is provided with "/**" suffix. See the patch for details. +> +> The folder: prefix becomes a literal boolean prefix, similar to path:, +> except it matches the maildir cur/new folders in addition to the +> specified path. There's no recursive version. +> +> Patches 1-5 add the above. +> +> Patches 6-8 change the test infrastructure to make it easier to add +> multiple corpuses, and adds a new test for path: and folder:. +> +> Patches 9-11 add support for testing the database upgrade. +> +> Patches 12-13 update man pages. +> +> +> I've dropped most of the content in patches 7 and 10 due to their +> size. The patches (and the whole series) are available in the +> boolean-folder-and-path-v2 branch at +> git://gitorious.org/jani/notmuch.git. Web interface at +> https://gitorious.org/jani/notmuch/commits/0b3dd2d1cc6c413ea07ea326883ac448499c0e79. +> +> +> WARNING! The change requires a database format version bump, and a +> database upgrade, which is automatically done on 'notmuch new'. The +> upgrade is irreversible if you want to try this on your database! A +> complete database rebuild is required for reverting the database format +> version. Make sure your backups are in order! +> +> +> BR, +> Jani. +> +> +> Jani Nikula (13): +> lib: refactor folder term update after filename removal +> lib: add support for path: prefix searches +> test: make insert test use the path: prefix +> lib: make folder: prefix literal +> test: fix test for literal folder: search +> test: make it possible to have several corpora +> test: add new corpus with folders +> test: add tests for the new boolean folder: and path: prefixes +> devel: add script to generate test databases +> test: add test database in format version 1 +> test: add database upgrade test from format version 1 to 2 +> man: update man pages for folder: and path: search terms +> man: try to clarify the folder: and path: vs. --output=files confusion +> +> devel/gen-testdb.sh | 124 ++++++++++++ +> lib/database.cc | 45 ++++- +> lib/message.cc | 249 ++++++++++++++++------- +> lib/notmuch-private.h | 3 + +> man/man1/notmuch-search.1 | 10 +- +> man/man7/notmuch-search-terms.7 | 28 ++- +> test/.gitignore | 2 +- +> test/Makefile.local | 2 +- +> test/T070-insert.sh | 10 +- +> test/T100-search-by-folder.sh | 24 ++- +> test/T101-search-by-folder-and-path.sh | 83 ++++++++ +> test/T480-hex-escaping.sh | 4 +- +> test/T530-upgrade.sh | 103 ++++++++++ +> test/corpus/{ => default}/cur/01:2, | 0 +> test/corpus/{ => default}/cur/02:2, | 0 +> test/corpus/{ => default}/cur/03:2, | 0 +> test/corpus/{ => default}/cur/04:2, | 0 +> test/corpus/{ => default}/cur/05:2, | 0 +> test/corpus/{ => default}/cur/06:2, | 0 +> test/corpus/{ => default}/cur/07:2, | 0 +> test/corpus/{ => default}/cur/08:2, | 0 +> test/corpus/{ => default}/cur/09:2, | 0 +> test/corpus/{ => default}/cur/10:2, | 0 +> test/corpus/{ => default}/cur/11:2, | 0 +> test/corpus/{ => default}/cur/12:2, | 0 +> test/corpus/{ => default}/cur/13:2, | 0 +> test/corpus/{ => default}/cur/14:2, | 0 +> test/corpus/{ => default}/cur/15:2, | 0 +> test/corpus/{ => default}/cur/16:2, | 0 +> test/corpus/{ => default}/cur/17:2, | 0 +> test/corpus/{ => default}/cur/18:2, | 0 +> test/corpus/{ => default}/cur/19:2, | 0 +> test/corpus/{ => default}/cur/20:2, | 0 +> test/corpus/{ => default}/cur/21:2, | 0 +> test/corpus/{ => default}/cur/22:2, | 0 +> test/corpus/{ => default}/cur/23:2, | 0 +> test/corpus/{ => default}/cur/24:2, | 0 +> test/corpus/{ => default}/cur/25:2, | 0 +> test/corpus/{ => default}/cur/26:2, | 0 +> test/corpus/{ => default}/cur/27:2, | 0 +> test/corpus/{ => default}/cur/28:2, | 0 +> test/corpus/{ => default}/cur/29:2, | 0 +> test/corpus/{ => default}/cur/30:2, | 0 +> test/corpus/{ => default}/cur/31:2, | 0 +> test/corpus/{ => default}/cur/32:2, | 0 +> test/corpus/{ => default}/cur/33:2, | 0 +> test/corpus/{ => default}/cur/34:2, | 0 +> test/corpus/{ => default}/cur/35:2, | 0 +> test/corpus/{ => default}/cur/36:2, | 0 +> test/corpus/{ => default}/cur/37:2, | 0 +> test/corpus/{ => default}/cur/38:2, | 0 +> test/corpus/{ => default}/cur/39:2, | 0 +> test/corpus/{ => default}/cur/40:2, | 0 +> test/corpus/{ => default}/cur/41:2, | 0 +> test/corpus/{ => default}/cur/42:2, | 0 +> test/corpus/{ => default}/cur/43:2, | 0 +> test/corpus/{ => default}/cur/44:2, | 0 +> test/corpus/{ => default}/cur/45:2, | 0 +> test/corpus/{ => default}/cur/46:2, | 0 +> test/corpus/{ => default}/cur/47:2, | 0 +> test/corpus/{ => default}/cur/48:2, | 0 +> test/corpus/{ => default}/cur/49:2, | 0 +> test/corpus/{ => default}/cur/50:2, | 0 +> test/corpus/{ => default}/cur/51:2, | 0 +> test/corpus/{ => default}/cur/52:2, | 0 +> test/corpus/{ => default}/cur/53:2, | 0 +> test/corpus/folders/01:2, | 34 ++++ +> test/corpus/folders/02:2, | 32 +++ +> test/corpus/folders/bar/17:2, | 23 +++ +> test/corpus/folders/bar/18:2, | 12 ++ +> test/corpus/folders/bar/baz/05:2, | 104 ++++++++++ +> test/corpus/folders/bar/baz/23:2, | 145 +++++++++++++ +> test/corpus/folders/bar/baz/24:2, | 204 +++++++++++++++++++ +> test/corpus/folders/bar/baz/cur/25:2, | 32 +++ +> test/corpus/folders/bar/baz/cur/26:2, | 121 +++++++++++ +> test/corpus/folders/bar/baz/new/27:2, | 21 ++ +> test/corpus/folders/bar/baz/new/28:2, | 38 ++++ +> test/corpus/folders/bar/cur/19:2, | 360 +++++++++++++++++++++++++++++++++ +> test/corpus/folders/bar/cur/20:2, | 101 +++++++++ +> test/corpus/folders/bar/new/21:2, | 102 ++++++++++ +> test/corpus/folders/bar/new/22:2, | 84 ++++++++ +> test/corpus/folders/cur/29:2, | 21 ++ +> test/corpus/folders/cur/30:2, | 75 +++++++ +> test/corpus/folders/cur/31:2, | 31 +++ +> test/corpus/folders/cur/32:2, | 165 +++++++++++++++ +> test/corpus/folders/cur/33:2, | 13 ++ +> test/corpus/folders/cur/34:2, | 46 +++++ +> test/corpus/folders/cur/35:2, | 24 +++ +> test/corpus/folders/cur/36:2, | 25 +++ +> test/corpus/folders/cur/37:2, | 22 ++ +> test/corpus/folders/cur/38:2, | 40 ++++ +> test/corpus/folders/cur/39:2, | 32 +++ +> test/corpus/folders/cur/40:2, | 31 +++ +> test/corpus/folders/cur/41:2, | 37 ++++ +> test/corpus/folders/cur/42:2, | 30 +++ +> test/corpus/folders/cur/43:2, | 26 +++ +> test/corpus/folders/cur/44:2, | 29 +++ +> test/corpus/folders/cur/45:2, | 41 ++++ +> test/corpus/folders/cur/46:2, | 57 ++++++ +> test/corpus/folders/cur/47:2, | 84 ++++++++ +> test/corpus/folders/cur/48:2, | 17 ++ +> test/corpus/folders/cur/49:2, | 33 +++ +> test/corpus/folders/cur/50:2, | 39 ++++ +> test/corpus/folders/cur/52:2, | 39 ++++ +> test/corpus/folders/cur/53:2, | 20 ++ +> test/corpus/folders/foo/05:2, | 104 ++++++++++ +> test/corpus/folders/foo/06:2, | 36 ++++ +> test/corpus/folders/foo/baz/11:2, | 27 +++ +> test/corpus/folders/foo/baz/12:2, | 27 +++ +> test/corpus/folders/foo/baz/cur/13:2, | 178 ++++++++++++++++ +> test/corpus/folders/foo/baz/cur/14:2, | 39 ++++ +> test/corpus/folders/foo/baz/new/15:2, | 22 ++ +> test/corpus/folders/foo/baz/new/16:2, | 27 +++ +> test/corpus/folders/foo/cur/07:2, | 57 ++++++ +> test/corpus/folders/foo/cur/08:2, | 87 ++++++++ +> test/corpus/folders/foo/new/03:2, | 93 +++++++++ +> test/corpus/folders/foo/new/09:2, | 33 +++ +> test/corpus/folders/foo/new/10:2, | 54 +++++ +> test/corpus/folders/new/03:2, | 93 +++++++++ +> test/corpus/folders/new/04:2, | 84 ++++++++ +> test/notmuch-test | 2 +- +> test/test-databases/README | 5 + +> test/test-databases/database-v1.tar.gz | Bin 0 -> 262063 bytes +> test/test-lib.sh | 21 +- +> 124 files changed, 3954 insertions(+), 112 deletions(-) +> create mode 100755 devel/gen-testdb.sh +> create mode 100755 test/T101-search-by-folder-and-path.sh +> create mode 100755 test/T530-upgrade.sh +> rename test/corpus/{ => default}/cur/01:2, (100%) +> rename test/corpus/{ => default}/cur/02:2, (100%) +> rename test/corpus/{ => default}/cur/03:2, (100%) +> rename test/corpus/{ => default}/cur/04:2, (100%) +> rename test/corpus/{ => default}/cur/05:2, (100%) +> rename test/corpus/{ => default}/cur/06:2, (100%) +> rename test/corpus/{ => default}/cur/07:2, (100%) +> rename test/corpus/{ => default}/cur/08:2, (100%) +> rename test/corpus/{ => default}/cur/09:2, (100%) +> rename test/corpus/{ => default}/cur/10:2, (100%) +> rename test/corpus/{ => default}/cur/11:2, (100%) +> rename test/corpus/{ => default}/cur/12:2, (100%) +> rename test/corpus/{ => default}/cur/13:2, (100%) +> rename test/corpus/{ => default}/cur/14:2, (100%) +> rename test/corpus/{ => default}/cur/15:2, (100%) +> rename test/corpus/{ => default}/cur/16:2, (100%) +> rename test/corpus/{ => default}/cur/17:2, (100%) +> rename test/corpus/{ => default}/cur/18:2, (100%) +> rename test/corpus/{ => default}/cur/19:2, (100%) +> rename test/corpus/{ => default}/cur/20:2, (100%) +> rename test/corpus/{ => default}/cur/21:2, (100%) +> rename test/corpus/{ => default}/cur/22:2, (100%) +> rename test/corpus/{ => default}/cur/23:2, (100%) +> rename test/corpus/{ => default}/cur/24:2, (100%) +> rename test/corpus/{ => default}/cur/25:2, (100%) +> rename test/corpus/{ => default}/cur/26:2, (100%) +> rename test/corpus/{ => default}/cur/27:2, (100%) +> rename test/corpus/{ => default}/cur/28:2, (100%) +> rename test/corpus/{ => default}/cur/29:2, (100%) +> rename test/corpus/{ => default}/cur/30:2, (100%) +> rename test/corpus/{ => default}/cur/31:2, (100%) +> rename test/corpus/{ => default}/cur/32:2, (100%) +> rename test/corpus/{ => default}/cur/33:2, (100%) +> rename test/corpus/{ => default}/cur/34:2, (100%) +> rename test/corpus/{ => default}/cur/35:2, (100%) +> rename test/corpus/{ => default}/cur/36:2, (100%) +> rename test/corpus/{ => default}/cur/37:2, (100%) +> rename test/corpus/{ => default}/cur/38:2, (100%) +> rename test/corpus/{ => default}/cur/39:2, (100%) +> rename test/corpus/{ => default}/cur/40:2, (100%) +> rename test/corpus/{ => default}/cur/41:2, (100%) +> rename test/corpus/{ => default}/cur/42:2, (100%) +> rename test/corpus/{ => default}/cur/43:2, (100%) +> rename test/corpus/{ => default}/cur/44:2, (100%) +> rename test/corpus/{ => default}/cur/45:2, (100%) +> rename test/corpus/{ => default}/cur/46:2, (100%) +> rename test/corpus/{ => default}/cur/47:2, (100%) +> rename test/corpus/{ => default}/cur/48:2, (100%) +> rename test/corpus/{ => default}/cur/49:2, (100%) +> rename test/corpus/{ => default}/cur/50:2, (100%) +> rename test/corpus/{ => default}/cur/51:2, (100%) +> rename test/corpus/{ => default}/cur/52:2, (100%) +> rename test/corpus/{ => default}/cur/53:2, (100%) +> create mode 100644 test/corpus/folders/01:2, +> create mode 100644 test/corpus/folders/02:2, +> create mode 100644 test/corpus/folders/bar/17:2, +> create mode 100644 test/corpus/folders/bar/18:2, +> create mode 100644 test/corpus/folders/bar/baz/05:2, +> create mode 100644 test/corpus/folders/bar/baz/23:2, +> create mode 100644 test/corpus/folders/bar/baz/24:2, +> create mode 100644 test/corpus/folders/bar/baz/cur/25:2, +> create mode 100644 test/corpus/folders/bar/baz/cur/26:2, +> create mode 100644 test/corpus/folders/bar/baz/new/27:2, +> create mode 100644 test/corpus/folders/bar/baz/new/28:2, +> create mode 100644 test/corpus/folders/bar/cur/19:2, +> create mode 100644 test/corpus/folders/bar/cur/20:2, +> create mode 100644 test/corpus/folders/bar/new/21:2, +> create mode 100644 test/corpus/folders/bar/new/22:2, +> create mode 100644 test/corpus/folders/cur/29:2, +> create mode 100644 test/corpus/folders/cur/30:2, +> create mode 100644 test/corpus/folders/cur/31:2, +> create mode 100644 test/corpus/folders/cur/32:2, +> create mode 100644 test/corpus/folders/cur/33:2, +> create mode 100644 test/corpus/folders/cur/34:2, +> create mode 100644 test/corpus/folders/cur/35:2, +> create mode 100644 test/corpus/folders/cur/36:2, +> create mode 100644 test/corpus/folders/cur/37:2, +> create mode 100644 test/corpus/folders/cur/38:2, +> create mode 100644 test/corpus/folders/cur/39:2, +> create mode 100644 test/corpus/folders/cur/40:2, +> create mode 100644 test/corpus/folders/cur/41:2, +> create mode 100644 test/corpus/folders/cur/42:2, +> create mode 100644 test/corpus/folders/cur/43:2, +> create mode 100644 test/corpus/folders/cur/44:2, +> create mode 100644 test/corpus/folders/cur/45:2, +> create mode 100644 test/corpus/folders/cur/46:2, +> create mode 100644 test/corpus/folders/cur/47:2, +> create mode 100644 test/corpus/folders/cur/48:2, +> create mode 100644 test/corpus/folders/cur/49:2, +> create mode 100644 test/corpus/folders/cur/50:2, +> create mode 100644 test/corpus/folders/cur/52:2, +> create mode 100644 test/corpus/folders/cur/53:2, +> create mode 100644 test/corpus/folders/foo/05:2, +> create mode 100644 test/corpus/folders/foo/06:2, +> create mode 100644 test/corpus/folders/foo/baz/11:2, +> create mode 100644 test/corpus/folders/foo/baz/12:2, +> create mode 100644 test/corpus/folders/foo/baz/cur/13:2, +> create mode 100644 test/corpus/folders/foo/baz/cur/14:2, +> create mode 100644 test/corpus/folders/foo/baz/new/15:2, +> create mode 100644 test/corpus/folders/foo/baz/new/16:2, +> create mode 100644 test/corpus/folders/foo/cur/07:2, +> create mode 100644 test/corpus/folders/foo/cur/08:2, +> create mode 100644 test/corpus/folders/foo/new/03:2, +> create mode 100644 test/corpus/folders/foo/new/09:2, +> create mode 100644 test/corpus/folders/foo/new/10:2, +> create mode 100644 test/corpus/folders/new/03:2, +> create mode 100644 test/corpus/folders/new/04:2, +> create mode 100644 test/test-databases/README +> create mode 100644 test/test-databases/database-v1.tar.gz +> +> -- +> 1.8.5.3 +> +> _______________________________________________ +> notmuch mailing list +> notmuch@notmuchmail.org +> http://notmuchmail.org/mailman/listinfo/notmuch -- 2.26.2