From: Jani Nikula Date: Sat, 22 Feb 2014 22:25:31 +0000 (+0200) Subject: [PATCH v2 00/13] literal folder: prefix, new path: prefix X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=43a845c50ed89a448684a4c75d9bd9df6d7f4a38;p=notmuch-archives.git [PATCH v2 00/13] literal folder: prefix, new path: prefix --- diff --git a/6c/0b0f05c28face14a6b9954c22ddd7f375fdadc b/6c/0b0f05c28face14a6b9954c22ddd7f375fdadc new file mode 100644 index 000000000..42bda65c4 --- /dev/null +++ b/6c/0b0f05c28face14a6b9954c22ddd7f375fdadc @@ -0,0 +1,358 @@ +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 1F84F431E82 + for ; Sat, 22 Feb 2014 14:26:09 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: -0.7 +X-Spam-Level: +X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 + tests=[RCVD_IN_DNSWL_LOW=-0.7] 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 zPdWKunUjFJK for ; + Sat, 22 Feb 2014 14:26:01 -0800 (PST) +Received: from mail-ee0-f41.google.com (mail-ee0-f41.google.com + [74.125.83.41]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client + certificate requested) by olra.theworths.org (Postfix) with ESMTPS id + 32657431FD0 for ; Sat, 22 Feb 2014 14:25:57 -0800 + (PST) +Received: by mail-ee0-f41.google.com with SMTP id b15so173190eek.28 + for ; Sat, 22 Feb 2014 14:25:56 -0800 (PST) +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20130820; + h=x-gm-message-state:from:to:cc:subject:date:message-id; + bh=5or+fSISvPN6okM8CVy0SAqZzP8pwwgQyiAuoaWCucM=; + b=I6EGpgSxL30NyBdZvx7RX2Elend1SLWVWNsR0Is8so9bzMk4+8zsq0hDjNuXIA3pGk + wgrVcKE2tX35mcSnAMW9OktIPfvTBNYI2GNcAOuz2uiWc9iOex1grZrX7zMD5etrsZhU + UucTiRX7U+scIC4m/6IDo8bZKd1cwi3GmLdzZN3wh+IHiFj0Vpa2kY0D/3Sx1eiogmkc + 5T5mxfIQaihfN4kr2zA/vAdeP2c3607o+CQMldOcviaQQNLixyGpj6HeL1/ePFlkjUSy + lb6oUub6eCUj/ilb0AVs+DBDC5oqZSJdhPwNQdAnQJqc021ZHbNw9HcIlM20iNw2HpRD + saTA== +X-Gm-Message-State: + ALoCoQkIc7/6Fb/gLiqJ8DJW85yXbjbXViIdWOqchtQDRNUmlS3NMk1OK4c+R/5DNc+8mtJHr8Rt +X-Received: by 10.14.2.71 with SMTP id 47mr16444185eee.108.1393107947389; + Sat, 22 Feb 2014 14:25:47 -0800 (PST) +Received: from localhost (dsl-hkibrasgw2-58c36f-91.dhcp.inet.fi. + [88.195.111.91]) + by mx.google.com with ESMTPSA id u6sm43756078eep.11.2014.02.22.14.25.45 + for + (version=TLSv1.2 cipher=RC4-SHA bits=128/128); + Sat, 22 Feb 2014 14:25:46 -0800 (PST) +From: Jani Nikula +To: notmuch@notmuchmail.org +Subject: [PATCH v2 00/13] literal folder: prefix, new path: prefix +Date: Sun, 23 Feb 2014 00:25:31 +0200 +Message-Id: +X-Mailer: git-send-email 1.8.5.3 +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 22:26:09 -0000 + +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 +