--- /dev/null
+Return-Path: <tomi.ollila@iki.fi>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by olra.theworths.org (Postfix) with ESMTP id 2B4D2431FD8\r
+ for <notmuch@notmuchmail.org>; Sun, 23 Feb 2014 03:15:55 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+ autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+ by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id Lb9Izs5H3gAw for <notmuch@notmuchmail.org>;\r
+ Sun, 23 Feb 2014 03:15:47 -0800 (PST)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+ by olra.theworths.org (Postfix) with ESMTP id E1105431FCF\r
+ for <notmuch@notmuchmail.org>; Sun, 23 Feb 2014 03:15:46 -0800 (PST)\r
+Received: from guru.guru-group.fi (localhost [IPv6:::1])\r
+ by guru.guru-group.fi (Postfix) with ESMTP id B1B70100086;\r
+ Sun, 23 Feb 2014 13:15:39 +0200 (EET)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: Mark Walters <markwalters1009@gmail.com>, Jani Nikula <jani@nikula.org>,\r
+ notmuch@notmuchmail.org\r
+Subject: Re: [PATCH v2 00/13] literal folder: prefix, new path: prefix\r
+In-Reply-To: <87wqgmya2r.fsf@qmul.ac.uk>\r
+References: <cover.1393105055.git.jani@nikula.org> <87wqgmya2r.fsf@qmul.ac.uk>\r
+User-Agent: Notmuch/0.17+94~g1b90823 (http://notmuchmail.org) Emacs/24.3.1\r
+ (x86_64-unknown-linux-gnu)\r
+X-Face: HhBM'cA~<r"^Xv\KRN0P{vn'Y"Kd;zg_y3S[4)KSN~s?O\"QPoL\r
+ $[Xv_BD:i/F$WiEWax}R(MPS`^UaptOGD`*/=@\1lKoVa9tnrg0TW?"r7aRtgk[F\r
+ !)g;OY^,BjTbr)Np:%c_o'jj,Z\r
+Date: Sun, 23 Feb 2014 13:15:39 +0200\r
+Message-ID: <m2y512qdus.fsf@guru.guru-group.fi>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sun, 23 Feb 2014 11:15:55 -0000\r
+\r
+On Sun, Feb 23 2014, Mark Walters <markwalters1009@gmail.com> wrote:\r
+\r
+> I have read most of this series, tested it and run the tests and LGTM +1.\r
+>\r
+> I read the C code fairly carefully, the tests rather less so but they\r
+> looked sane, and I didn't really look at patch 9 for building old\r
+> databases.\r
+\r
+Well, I can add (at this point) that patch 9 is tolerable...\r
+\r
+>\r
+> Best wishes\r
+>\r
+> Mark\r
+\r
+Tomi\r
+\r
+\r
+>\r
+>\r
+>\r
+>\r
+> On Sat, 22 Feb 2014, Jani Nikula <jani@nikula.org> wrote:\r
+>> Hi all, this is v2 of id:cover.1389304779.git.jani@nikula.org.\r
+>>\r
+>> The new path: prefix is a literal boolean prefix matching the paths,\r
+>> relative from the maildir root, of the message files. There's no\r
+>> interpretation of the maildir special cur/new folders, but a recursive\r
+>> match is provided with "/**" suffix. See the patch for details.\r
+>>\r
+>> The folder: prefix becomes a literal boolean prefix, similar to path:,\r
+>> except it matches the maildir cur/new folders in addition to the\r
+>> specified path. There's no recursive version.\r
+>>\r
+>> Patches 1-5 add the above.\r
+>>\r
+>> Patches 6-8 change the test infrastructure to make it easier to add\r
+>> multiple corpuses, and adds a new test for path: and folder:.\r
+>>\r
+>> Patches 9-11 add support for testing the database upgrade.\r
+>>\r
+>> Patches 12-13 update man pages.\r
+>>\r
+>>\r
+>> I've dropped most of the content in patches 7 and 10 due to their\r
+>> size. The patches (and the whole series) are available in the\r
+>> boolean-folder-and-path-v2 branch at\r
+>> git://gitorious.org/jani/notmuch.git. Web interface at\r
+>> https://gitorious.org/jani/notmuch/commits/0b3dd2d1cc6c413ea07ea326883ac448499c0e79.\r
+>>\r
+>>\r
+>> WARNING! The change requires a database format version bump, and a\r
+>> database upgrade, which is automatically done on 'notmuch new'. The\r
+>> upgrade is irreversible if you want to try this on your database! A\r
+>> complete database rebuild is required for reverting the database format\r
+>> version. Make sure your backups are in order!\r
+>>\r
+>>\r
+>> BR,\r
+>> Jani.\r
+>>\r
+>>\r
+>> Jani Nikula (13):\r
+>> lib: refactor folder term update after filename removal\r
+>> lib: add support for path: prefix searches\r
+>> test: make insert test use the path: prefix\r
+>> lib: make folder: prefix literal\r
+>> test: fix test for literal folder: search\r
+>> test: make it possible to have several corpora\r
+>> test: add new corpus with folders\r
+>> test: add tests for the new boolean folder: and path: prefixes\r
+>> devel: add script to generate test databases\r
+>> test: add test database in format version 1\r
+>> test: add database upgrade test from format version 1 to 2\r
+>> man: update man pages for folder: and path: search terms\r
+>> man: try to clarify the folder: and path: vs. --output=files confusion\r
+>>\r
+>> devel/gen-testdb.sh | 124 ++++++++++++\r
+>> lib/database.cc | 45 ++++-\r
+>> lib/message.cc | 249 ++++++++++++++++-------\r
+>> lib/notmuch-private.h | 3 +\r
+>> man/man1/notmuch-search.1 | 10 +-\r
+>> man/man7/notmuch-search-terms.7 | 28 ++-\r
+>> test/.gitignore | 2 +-\r
+>> test/Makefile.local | 2 +-\r
+>> test/T070-insert.sh | 10 +-\r
+>> test/T100-search-by-folder.sh | 24 ++-\r
+>> test/T101-search-by-folder-and-path.sh | 83 ++++++++\r
+>> test/T480-hex-escaping.sh | 4 +-\r
+>> test/T530-upgrade.sh | 103 ++++++++++\r
+>> test/corpus/{ => default}/cur/01:2, | 0\r
+>> test/corpus/{ => default}/cur/02:2, | 0\r
+>> test/corpus/{ => default}/cur/03:2, | 0\r
+>> test/corpus/{ => default}/cur/04:2, | 0\r
+>> test/corpus/{ => default}/cur/05:2, | 0\r
+>> test/corpus/{ => default}/cur/06:2, | 0\r
+>> test/corpus/{ => default}/cur/07:2, | 0\r
+>> test/corpus/{ => default}/cur/08:2, | 0\r
+>> test/corpus/{ => default}/cur/09:2, | 0\r
+>> test/corpus/{ => default}/cur/10:2, | 0\r
+>> test/corpus/{ => default}/cur/11:2, | 0\r
+>> test/corpus/{ => default}/cur/12:2, | 0\r
+>> test/corpus/{ => default}/cur/13:2, | 0\r
+>> test/corpus/{ => default}/cur/14:2, | 0\r
+>> test/corpus/{ => default}/cur/15:2, | 0\r
+>> test/corpus/{ => default}/cur/16:2, | 0\r
+>> test/corpus/{ => default}/cur/17:2, | 0\r
+>> test/corpus/{ => default}/cur/18:2, | 0\r
+>> test/corpus/{ => default}/cur/19:2, | 0\r
+>> test/corpus/{ => default}/cur/20:2, | 0\r
+>> test/corpus/{ => default}/cur/21:2, | 0\r
+>> test/corpus/{ => default}/cur/22:2, | 0\r
+>> test/corpus/{ => default}/cur/23:2, | 0\r
+>> test/corpus/{ => default}/cur/24:2, | 0\r
+>> test/corpus/{ => default}/cur/25:2, | 0\r
+>> test/corpus/{ => default}/cur/26:2, | 0\r
+>> test/corpus/{ => default}/cur/27:2, | 0\r
+>> test/corpus/{ => default}/cur/28:2, | 0\r
+>> test/corpus/{ => default}/cur/29:2, | 0\r
+>> test/corpus/{ => default}/cur/30:2, | 0\r
+>> test/corpus/{ => default}/cur/31:2, | 0\r
+>> test/corpus/{ => default}/cur/32:2, | 0\r
+>> test/corpus/{ => default}/cur/33:2, | 0\r
+>> test/corpus/{ => default}/cur/34:2, | 0\r
+>> test/corpus/{ => default}/cur/35:2, | 0\r
+>> test/corpus/{ => default}/cur/36:2, | 0\r
+>> test/corpus/{ => default}/cur/37:2, | 0\r
+>> test/corpus/{ => default}/cur/38:2, | 0\r
+>> test/corpus/{ => default}/cur/39:2, | 0\r
+>> test/corpus/{ => default}/cur/40:2, | 0\r
+>> test/corpus/{ => default}/cur/41:2, | 0\r
+>> test/corpus/{ => default}/cur/42:2, | 0\r
+>> test/corpus/{ => default}/cur/43:2, | 0\r
+>> test/corpus/{ => default}/cur/44:2, | 0\r
+>> test/corpus/{ => default}/cur/45:2, | 0\r
+>> test/corpus/{ => default}/cur/46:2, | 0\r
+>> test/corpus/{ => default}/cur/47:2, | 0\r
+>> test/corpus/{ => default}/cur/48:2, | 0\r
+>> test/corpus/{ => default}/cur/49:2, | 0\r
+>> test/corpus/{ => default}/cur/50:2, | 0\r
+>> test/corpus/{ => default}/cur/51:2, | 0\r
+>> test/corpus/{ => default}/cur/52:2, | 0\r
+>> test/corpus/{ => default}/cur/53:2, | 0\r
+>> test/corpus/folders/01:2, | 34 ++++\r
+>> test/corpus/folders/02:2, | 32 +++\r
+>> test/corpus/folders/bar/17:2, | 23 +++\r
+>> test/corpus/folders/bar/18:2, | 12 ++\r
+>> test/corpus/folders/bar/baz/05:2, | 104 ++++++++++\r
+>> test/corpus/folders/bar/baz/23:2, | 145 +++++++++++++\r
+>> test/corpus/folders/bar/baz/24:2, | 204 +++++++++++++++++++\r
+>> test/corpus/folders/bar/baz/cur/25:2, | 32 +++\r
+>> test/corpus/folders/bar/baz/cur/26:2, | 121 +++++++++++\r
+>> test/corpus/folders/bar/baz/new/27:2, | 21 ++\r
+>> test/corpus/folders/bar/baz/new/28:2, | 38 ++++\r
+>> test/corpus/folders/bar/cur/19:2, | 360 +++++++++++++++++++++++++++++++++\r
+>> test/corpus/folders/bar/cur/20:2, | 101 +++++++++\r
+>> test/corpus/folders/bar/new/21:2, | 102 ++++++++++\r
+>> test/corpus/folders/bar/new/22:2, | 84 ++++++++\r
+>> test/corpus/folders/cur/29:2, | 21 ++\r
+>> test/corpus/folders/cur/30:2, | 75 +++++++\r
+>> test/corpus/folders/cur/31:2, | 31 +++\r
+>> test/corpus/folders/cur/32:2, | 165 +++++++++++++++\r
+>> test/corpus/folders/cur/33:2, | 13 ++\r
+>> test/corpus/folders/cur/34:2, | 46 +++++\r
+>> test/corpus/folders/cur/35:2, | 24 +++\r
+>> test/corpus/folders/cur/36:2, | 25 +++\r
+>> test/corpus/folders/cur/37:2, | 22 ++\r
+>> test/corpus/folders/cur/38:2, | 40 ++++\r
+>> test/corpus/folders/cur/39:2, | 32 +++\r
+>> test/corpus/folders/cur/40:2, | 31 +++\r
+>> test/corpus/folders/cur/41:2, | 37 ++++\r
+>> test/corpus/folders/cur/42:2, | 30 +++\r
+>> test/corpus/folders/cur/43:2, | 26 +++\r
+>> test/corpus/folders/cur/44:2, | 29 +++\r
+>> test/corpus/folders/cur/45:2, | 41 ++++\r
+>> test/corpus/folders/cur/46:2, | 57 ++++++\r
+>> test/corpus/folders/cur/47:2, | 84 ++++++++\r
+>> test/corpus/folders/cur/48:2, | 17 ++\r
+>> test/corpus/folders/cur/49:2, | 33 +++\r
+>> test/corpus/folders/cur/50:2, | 39 ++++\r
+>> test/corpus/folders/cur/52:2, | 39 ++++\r
+>> test/corpus/folders/cur/53:2, | 20 ++\r
+>> test/corpus/folders/foo/05:2, | 104 ++++++++++\r
+>> test/corpus/folders/foo/06:2, | 36 ++++\r
+>> test/corpus/folders/foo/baz/11:2, | 27 +++\r
+>> test/corpus/folders/foo/baz/12:2, | 27 +++\r
+>> test/corpus/folders/foo/baz/cur/13:2, | 178 ++++++++++++++++\r
+>> test/corpus/folders/foo/baz/cur/14:2, | 39 ++++\r
+>> test/corpus/folders/foo/baz/new/15:2, | 22 ++\r
+>> test/corpus/folders/foo/baz/new/16:2, | 27 +++\r
+>> test/corpus/folders/foo/cur/07:2, | 57 ++++++\r
+>> test/corpus/folders/foo/cur/08:2, | 87 ++++++++\r
+>> test/corpus/folders/foo/new/03:2, | 93 +++++++++\r
+>> test/corpus/folders/foo/new/09:2, | 33 +++\r
+>> test/corpus/folders/foo/new/10:2, | 54 +++++\r
+>> test/corpus/folders/new/03:2, | 93 +++++++++\r
+>> test/corpus/folders/new/04:2, | 84 ++++++++\r
+>> test/notmuch-test | 2 +-\r
+>> test/test-databases/README | 5 +\r
+>> test/test-databases/database-v1.tar.gz | Bin 0 -> 262063 bytes\r
+>> test/test-lib.sh | 21 +-\r
+>> 124 files changed, 3954 insertions(+), 112 deletions(-)\r
+>> create mode 100755 devel/gen-testdb.sh\r
+>> create mode 100755 test/T101-search-by-folder-and-path.sh\r
+>> create mode 100755 test/T530-upgrade.sh\r
+>> rename test/corpus/{ => default}/cur/01:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/02:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/03:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/04:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/05:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/06:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/07:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/08:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/09:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/10:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/11:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/12:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/13:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/14:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/15:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/16:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/17:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/18:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/19:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/20:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/21:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/22:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/23:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/24:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/25:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/26:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/27:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/28:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/29:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/30:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/31:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/32:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/33:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/34:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/35:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/36:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/37:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/38:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/39:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/40:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/41:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/42:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/43:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/44:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/45:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/46:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/47:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/48:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/49:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/50:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/51:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/52:2, (100%)\r
+>> rename test/corpus/{ => default}/cur/53:2, (100%)\r
+>> create mode 100644 test/corpus/folders/01:2,\r
+>> create mode 100644 test/corpus/folders/02:2,\r
+>> create mode 100644 test/corpus/folders/bar/17:2,\r
+>> create mode 100644 test/corpus/folders/bar/18:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/05:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/23:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/24:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/cur/25:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/cur/26:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/new/27:2,\r
+>> create mode 100644 test/corpus/folders/bar/baz/new/28:2,\r
+>> create mode 100644 test/corpus/folders/bar/cur/19:2,\r
+>> create mode 100644 test/corpus/folders/bar/cur/20:2,\r
+>> create mode 100644 test/corpus/folders/bar/new/21:2,\r
+>> create mode 100644 test/corpus/folders/bar/new/22:2,\r
+>> create mode 100644 test/corpus/folders/cur/29:2,\r
+>> create mode 100644 test/corpus/folders/cur/30:2,\r
+>> create mode 100644 test/corpus/folders/cur/31:2,\r
+>> create mode 100644 test/corpus/folders/cur/32:2,\r
+>> create mode 100644 test/corpus/folders/cur/33:2,\r
+>> create mode 100644 test/corpus/folders/cur/34:2,\r
+>> create mode 100644 test/corpus/folders/cur/35:2,\r
+>> create mode 100644 test/corpus/folders/cur/36:2,\r
+>> create mode 100644 test/corpus/folders/cur/37:2,\r
+>> create mode 100644 test/corpus/folders/cur/38:2,\r
+>> create mode 100644 test/corpus/folders/cur/39:2,\r
+>> create mode 100644 test/corpus/folders/cur/40:2,\r
+>> create mode 100644 test/corpus/folders/cur/41:2,\r
+>> create mode 100644 test/corpus/folders/cur/42:2,\r
+>> create mode 100644 test/corpus/folders/cur/43:2,\r
+>> create mode 100644 test/corpus/folders/cur/44:2,\r
+>> create mode 100644 test/corpus/folders/cur/45:2,\r
+>> create mode 100644 test/corpus/folders/cur/46:2,\r
+>> create mode 100644 test/corpus/folders/cur/47:2,\r
+>> create mode 100644 test/corpus/folders/cur/48:2,\r
+>> create mode 100644 test/corpus/folders/cur/49:2,\r
+>> create mode 100644 test/corpus/folders/cur/50:2,\r
+>> create mode 100644 test/corpus/folders/cur/52:2,\r
+>> create mode 100644 test/corpus/folders/cur/53:2,\r
+>> create mode 100644 test/corpus/folders/foo/05:2,\r
+>> create mode 100644 test/corpus/folders/foo/06:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/11:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/12:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/cur/13:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/cur/14:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/new/15:2,\r
+>> create mode 100644 test/corpus/folders/foo/baz/new/16:2,\r
+>> create mode 100644 test/corpus/folders/foo/cur/07:2,\r
+>> create mode 100644 test/corpus/folders/foo/cur/08:2,\r
+>> create mode 100644 test/corpus/folders/foo/new/03:2,\r
+>> create mode 100644 test/corpus/folders/foo/new/09:2,\r
+>> create mode 100644 test/corpus/folders/foo/new/10:2,\r
+>> create mode 100644 test/corpus/folders/new/03:2,\r
+>> create mode 100644 test/corpus/folders/new/04:2,\r
+>> create mode 100644 test/test-databases/README\r
+>> create mode 100644 test/test-databases/database-v1.tar.gz\r
+>>\r
+>> -- \r
+>> 1.8.5.3\r
+>>\r
+>> _______________________________________________\r
+>> notmuch mailing list\r
+>> notmuch@notmuchmail.org\r
+>> http://notmuchmail.org/mailman/listinfo/notmuch\r
+> _______________________________________________\r
+> notmuch mailing list\r
+> notmuch@notmuchmail.org\r
+> http://notmuchmail.org/mailman/listinfo/notmuch\r