1 Return-Path: <jani@nikula.org>
\r
2 X-Original-To: notmuch@notmuchmail.org
\r
3 Delivered-To: notmuch@notmuchmail.org
\r
4 Received: from localhost (localhost [127.0.0.1])
\r
5 by olra.theworths.org (Postfix) with ESMTP id 1F84F431E82
\r
6 for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:26:09 -0800 (PST)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5
\r
12 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled
\r
13 Received: from olra.theworths.org ([127.0.0.1])
\r
14 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
15 with ESMTP id zPdWKunUjFJK for <notmuch@notmuchmail.org>;
\r
16 Sat, 22 Feb 2014 14:26:01 -0800 (PST)
\r
17 Received: from mail-ee0-f41.google.com (mail-ee0-f41.google.com
\r
18 [74.125.83.41]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client
\r
19 certificate requested) by olra.theworths.org (Postfix) with ESMTPS id
\r
20 32657431FD0 for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:25:57 -0800
\r
22 Received: by mail-ee0-f41.google.com with SMTP id b15so173190eek.28
\r
23 for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:25:56 -0800 (PST)
\r
24 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
\r
25 d=1e100.net; s=20130820;
\r
26 h=x-gm-message-state:from:to:cc:subject:date:message-id;
\r
27 bh=5or+fSISvPN6okM8CVy0SAqZzP8pwwgQyiAuoaWCucM=;
\r
28 b=I6EGpgSxL30NyBdZvx7RX2Elend1SLWVWNsR0Is8so9bzMk4+8zsq0hDjNuXIA3pGk
\r
29 wgrVcKE2tX35mcSnAMW9OktIPfvTBNYI2GNcAOuz2uiWc9iOex1grZrX7zMD5etrsZhU
\r
30 UucTiRX7U+scIC4m/6IDo8bZKd1cwi3GmLdzZN3wh+IHiFj0Vpa2kY0D/3Sx1eiogmkc
\r
31 5T5mxfIQaihfN4kr2zA/vAdeP2c3607o+CQMldOcviaQQNLixyGpj6HeL1/ePFlkjUSy
\r
32 lb6oUub6eCUj/ilb0AVs+DBDC5oqZSJdhPwNQdAnQJqc021ZHbNw9HcIlM20iNw2HpRD
\r
35 ALoCoQkIc7/6Fb/gLiqJ8DJW85yXbjbXViIdWOqchtQDRNUmlS3NMk1OK4c+R/5DNc+8mtJHr8Rt
\r
36 X-Received: by 10.14.2.71 with SMTP id 47mr16444185eee.108.1393107947389;
\r
37 Sat, 22 Feb 2014 14:25:47 -0800 (PST)
\r
38 Received: from localhost (dsl-hkibrasgw2-58c36f-91.dhcp.inet.fi.
\r
40 by mx.google.com with ESMTPSA id u6sm43756078eep.11.2014.02.22.14.25.45
\r
41 for <multiple recipients>
\r
42 (version=TLSv1.2 cipher=RC4-SHA bits=128/128);
\r
43 Sat, 22 Feb 2014 14:25:46 -0800 (PST)
\r
44 From: Jani Nikula <jani@nikula.org>
\r
45 To: notmuch@notmuchmail.org
\r
46 Subject: [PATCH v2 00/13] literal folder: prefix, new path: prefix
\r
47 Date: Sun, 23 Feb 2014 00:25:31 +0200
\r
48 Message-Id: <cover.1393105055.git.jani@nikula.org>
\r
49 X-Mailer: git-send-email 1.8.5.3
\r
50 X-BeenThere: notmuch@notmuchmail.org
\r
51 X-Mailman-Version: 2.1.13
\r
53 List-Id: "Use and development of the notmuch mail system."
\r
54 <notmuch.notmuchmail.org>
\r
55 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
56 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
57 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
58 List-Post: <mailto:notmuch@notmuchmail.org>
\r
59 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
60 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
61 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
62 X-List-Received-Date: Sat, 22 Feb 2014 22:26:09 -0000
\r
64 Hi all, this is v2 of id:cover.1389304779.git.jani@nikula.org.
\r
66 The new path: prefix is a literal boolean prefix matching the paths,
\r
67 relative from the maildir root, of the message files. There's no
\r
68 interpretation of the maildir special cur/new folders, but a recursive
\r
69 match is provided with "/**" suffix. See the patch for details.
\r
71 The folder: prefix becomes a literal boolean prefix, similar to path:,
\r
72 except it matches the maildir cur/new folders in addition to the
\r
73 specified path. There's no recursive version.
\r
75 Patches 1-5 add the above.
\r
77 Patches 6-8 change the test infrastructure to make it easier to add
\r
78 multiple corpuses, and adds a new test for path: and folder:.
\r
80 Patches 9-11 add support for testing the database upgrade.
\r
82 Patches 12-13 update man pages.
\r
85 I've dropped most of the content in patches 7 and 10 due to their
\r
86 size. The patches (and the whole series) are available in the
\r
87 boolean-folder-and-path-v2 branch at
\r
88 git://gitorious.org/jani/notmuch.git. Web interface at
\r
89 https://gitorious.org/jani/notmuch/commits/0b3dd2d1cc6c413ea07ea326883ac448499c0e79.
\r
92 WARNING! The change requires a database format version bump, and a
\r
93 database upgrade, which is automatically done on 'notmuch new'. The
\r
94 upgrade is irreversible if you want to try this on your database! A
\r
95 complete database rebuild is required for reverting the database format
\r
96 version. Make sure your backups are in order!
\r
104 lib: refactor folder term update after filename removal
\r
105 lib: add support for path: prefix searches
\r
106 test: make insert test use the path: prefix
\r
107 lib: make folder: prefix literal
\r
108 test: fix test for literal folder: search
\r
109 test: make it possible to have several corpora
\r
110 test: add new corpus with folders
\r
111 test: add tests for the new boolean folder: and path: prefixes
\r
112 devel: add script to generate test databases
\r
113 test: add test database in format version 1
\r
114 test: add database upgrade test from format version 1 to 2
\r
115 man: update man pages for folder: and path: search terms
\r
116 man: try to clarify the folder: and path: vs. --output=files confusion
\r
118 devel/gen-testdb.sh | 124 ++++++++++++
\r
119 lib/database.cc | 45 ++++-
\r
120 lib/message.cc | 249 ++++++++++++++++-------
\r
121 lib/notmuch-private.h | 3 +
\r
122 man/man1/notmuch-search.1 | 10 +-
\r
123 man/man7/notmuch-search-terms.7 | 28 ++-
\r
124 test/.gitignore | 2 +-
\r
125 test/Makefile.local | 2 +-
\r
126 test/T070-insert.sh | 10 +-
\r
127 test/T100-search-by-folder.sh | 24 ++-
\r
128 test/T101-search-by-folder-and-path.sh | 83 ++++++++
\r
129 test/T480-hex-escaping.sh | 4 +-
\r
130 test/T530-upgrade.sh | 103 ++++++++++
\r
131 test/corpus/{ => default}/cur/01:2, | 0
\r
132 test/corpus/{ => default}/cur/02:2, | 0
\r
133 test/corpus/{ => default}/cur/03:2, | 0
\r
134 test/corpus/{ => default}/cur/04:2, | 0
\r
135 test/corpus/{ => default}/cur/05:2, | 0
\r
136 test/corpus/{ => default}/cur/06:2, | 0
\r
137 test/corpus/{ => default}/cur/07:2, | 0
\r
138 test/corpus/{ => default}/cur/08:2, | 0
\r
139 test/corpus/{ => default}/cur/09:2, | 0
\r
140 test/corpus/{ => default}/cur/10:2, | 0
\r
141 test/corpus/{ => default}/cur/11:2, | 0
\r
142 test/corpus/{ => default}/cur/12:2, | 0
\r
143 test/corpus/{ => default}/cur/13:2, | 0
\r
144 test/corpus/{ => default}/cur/14:2, | 0
\r
145 test/corpus/{ => default}/cur/15:2, | 0
\r
146 test/corpus/{ => default}/cur/16:2, | 0
\r
147 test/corpus/{ => default}/cur/17:2, | 0
\r
148 test/corpus/{ => default}/cur/18:2, | 0
\r
149 test/corpus/{ => default}/cur/19:2, | 0
\r
150 test/corpus/{ => default}/cur/20:2, | 0
\r
151 test/corpus/{ => default}/cur/21:2, | 0
\r
152 test/corpus/{ => default}/cur/22:2, | 0
\r
153 test/corpus/{ => default}/cur/23:2, | 0
\r
154 test/corpus/{ => default}/cur/24:2, | 0
\r
155 test/corpus/{ => default}/cur/25:2, | 0
\r
156 test/corpus/{ => default}/cur/26:2, | 0
\r
157 test/corpus/{ => default}/cur/27:2, | 0
\r
158 test/corpus/{ => default}/cur/28:2, | 0
\r
159 test/corpus/{ => default}/cur/29:2, | 0
\r
160 test/corpus/{ => default}/cur/30:2, | 0
\r
161 test/corpus/{ => default}/cur/31:2, | 0
\r
162 test/corpus/{ => default}/cur/32:2, | 0
\r
163 test/corpus/{ => default}/cur/33:2, | 0
\r
164 test/corpus/{ => default}/cur/34:2, | 0
\r
165 test/corpus/{ => default}/cur/35:2, | 0
\r
166 test/corpus/{ => default}/cur/36:2, | 0
\r
167 test/corpus/{ => default}/cur/37:2, | 0
\r
168 test/corpus/{ => default}/cur/38:2, | 0
\r
169 test/corpus/{ => default}/cur/39:2, | 0
\r
170 test/corpus/{ => default}/cur/40:2, | 0
\r
171 test/corpus/{ => default}/cur/41:2, | 0
\r
172 test/corpus/{ => default}/cur/42:2, | 0
\r
173 test/corpus/{ => default}/cur/43:2, | 0
\r
174 test/corpus/{ => default}/cur/44:2, | 0
\r
175 test/corpus/{ => default}/cur/45:2, | 0
\r
176 test/corpus/{ => default}/cur/46:2, | 0
\r
177 test/corpus/{ => default}/cur/47:2, | 0
\r
178 test/corpus/{ => default}/cur/48:2, | 0
\r
179 test/corpus/{ => default}/cur/49:2, | 0
\r
180 test/corpus/{ => default}/cur/50:2, | 0
\r
181 test/corpus/{ => default}/cur/51:2, | 0
\r
182 test/corpus/{ => default}/cur/52:2, | 0
\r
183 test/corpus/{ => default}/cur/53:2, | 0
\r
184 test/corpus/folders/01:2, | 34 ++++
\r
185 test/corpus/folders/02:2, | 32 +++
\r
186 test/corpus/folders/bar/17:2, | 23 +++
\r
187 test/corpus/folders/bar/18:2, | 12 ++
\r
188 test/corpus/folders/bar/baz/05:2, | 104 ++++++++++
\r
189 test/corpus/folders/bar/baz/23:2, | 145 +++++++++++++
\r
190 test/corpus/folders/bar/baz/24:2, | 204 +++++++++++++++++++
\r
191 test/corpus/folders/bar/baz/cur/25:2, | 32 +++
\r
192 test/corpus/folders/bar/baz/cur/26:2, | 121 +++++++++++
\r
193 test/corpus/folders/bar/baz/new/27:2, | 21 ++
\r
194 test/corpus/folders/bar/baz/new/28:2, | 38 ++++
\r
195 test/corpus/folders/bar/cur/19:2, | 360 +++++++++++++++++++++++++++++++++
\r
196 test/corpus/folders/bar/cur/20:2, | 101 +++++++++
\r
197 test/corpus/folders/bar/new/21:2, | 102 ++++++++++
\r
198 test/corpus/folders/bar/new/22:2, | 84 ++++++++
\r
199 test/corpus/folders/cur/29:2, | 21 ++
\r
200 test/corpus/folders/cur/30:2, | 75 +++++++
\r
201 test/corpus/folders/cur/31:2, | 31 +++
\r
202 test/corpus/folders/cur/32:2, | 165 +++++++++++++++
\r
203 test/corpus/folders/cur/33:2, | 13 ++
\r
204 test/corpus/folders/cur/34:2, | 46 +++++
\r
205 test/corpus/folders/cur/35:2, | 24 +++
\r
206 test/corpus/folders/cur/36:2, | 25 +++
\r
207 test/corpus/folders/cur/37:2, | 22 ++
\r
208 test/corpus/folders/cur/38:2, | 40 ++++
\r
209 test/corpus/folders/cur/39:2, | 32 +++
\r
210 test/corpus/folders/cur/40:2, | 31 +++
\r
211 test/corpus/folders/cur/41:2, | 37 ++++
\r
212 test/corpus/folders/cur/42:2, | 30 +++
\r
213 test/corpus/folders/cur/43:2, | 26 +++
\r
214 test/corpus/folders/cur/44:2, | 29 +++
\r
215 test/corpus/folders/cur/45:2, | 41 ++++
\r
216 test/corpus/folders/cur/46:2, | 57 ++++++
\r
217 test/corpus/folders/cur/47:2, | 84 ++++++++
\r
218 test/corpus/folders/cur/48:2, | 17 ++
\r
219 test/corpus/folders/cur/49:2, | 33 +++
\r
220 test/corpus/folders/cur/50:2, | 39 ++++
\r
221 test/corpus/folders/cur/52:2, | 39 ++++
\r
222 test/corpus/folders/cur/53:2, | 20 ++
\r
223 test/corpus/folders/foo/05:2, | 104 ++++++++++
\r
224 test/corpus/folders/foo/06:2, | 36 ++++
\r
225 test/corpus/folders/foo/baz/11:2, | 27 +++
\r
226 test/corpus/folders/foo/baz/12:2, | 27 +++
\r
227 test/corpus/folders/foo/baz/cur/13:2, | 178 ++++++++++++++++
\r
228 test/corpus/folders/foo/baz/cur/14:2, | 39 ++++
\r
229 test/corpus/folders/foo/baz/new/15:2, | 22 ++
\r
230 test/corpus/folders/foo/baz/new/16:2, | 27 +++
\r
231 test/corpus/folders/foo/cur/07:2, | 57 ++++++
\r
232 test/corpus/folders/foo/cur/08:2, | 87 ++++++++
\r
233 test/corpus/folders/foo/new/03:2, | 93 +++++++++
\r
234 test/corpus/folders/foo/new/09:2, | 33 +++
\r
235 test/corpus/folders/foo/new/10:2, | 54 +++++
\r
236 test/corpus/folders/new/03:2, | 93 +++++++++
\r
237 test/corpus/folders/new/04:2, | 84 ++++++++
\r
238 test/notmuch-test | 2 +-
\r
239 test/test-databases/README | 5 +
\r
240 test/test-databases/database-v1.tar.gz | Bin 0 -> 262063 bytes
\r
241 test/test-lib.sh | 21 +-
\r
242 124 files changed, 3954 insertions(+), 112 deletions(-)
\r
243 create mode 100755 devel/gen-testdb.sh
\r
244 create mode 100755 test/T101-search-by-folder-and-path.sh
\r
245 create mode 100755 test/T530-upgrade.sh
\r
246 rename test/corpus/{ => default}/cur/01:2, (100%)
\r
247 rename test/corpus/{ => default}/cur/02:2, (100%)
\r
248 rename test/corpus/{ => default}/cur/03:2, (100%)
\r
249 rename test/corpus/{ => default}/cur/04:2, (100%)
\r
250 rename test/corpus/{ => default}/cur/05:2, (100%)
\r
251 rename test/corpus/{ => default}/cur/06:2, (100%)
\r
252 rename test/corpus/{ => default}/cur/07:2, (100%)
\r
253 rename test/corpus/{ => default}/cur/08:2, (100%)
\r
254 rename test/corpus/{ => default}/cur/09:2, (100%)
\r
255 rename test/corpus/{ => default}/cur/10:2, (100%)
\r
256 rename test/corpus/{ => default}/cur/11:2, (100%)
\r
257 rename test/corpus/{ => default}/cur/12:2, (100%)
\r
258 rename test/corpus/{ => default}/cur/13:2, (100%)
\r
259 rename test/corpus/{ => default}/cur/14:2, (100%)
\r
260 rename test/corpus/{ => default}/cur/15:2, (100%)
\r
261 rename test/corpus/{ => default}/cur/16:2, (100%)
\r
262 rename test/corpus/{ => default}/cur/17:2, (100%)
\r
263 rename test/corpus/{ => default}/cur/18:2, (100%)
\r
264 rename test/corpus/{ => default}/cur/19:2, (100%)
\r
265 rename test/corpus/{ => default}/cur/20:2, (100%)
\r
266 rename test/corpus/{ => default}/cur/21:2, (100%)
\r
267 rename test/corpus/{ => default}/cur/22:2, (100%)
\r
268 rename test/corpus/{ => default}/cur/23:2, (100%)
\r
269 rename test/corpus/{ => default}/cur/24:2, (100%)
\r
270 rename test/corpus/{ => default}/cur/25:2, (100%)
\r
271 rename test/corpus/{ => default}/cur/26:2, (100%)
\r
272 rename test/corpus/{ => default}/cur/27:2, (100%)
\r
273 rename test/corpus/{ => default}/cur/28:2, (100%)
\r
274 rename test/corpus/{ => default}/cur/29:2, (100%)
\r
275 rename test/corpus/{ => default}/cur/30:2, (100%)
\r
276 rename test/corpus/{ => default}/cur/31:2, (100%)
\r
277 rename test/corpus/{ => default}/cur/32:2, (100%)
\r
278 rename test/corpus/{ => default}/cur/33:2, (100%)
\r
279 rename test/corpus/{ => default}/cur/34:2, (100%)
\r
280 rename test/corpus/{ => default}/cur/35:2, (100%)
\r
281 rename test/corpus/{ => default}/cur/36:2, (100%)
\r
282 rename test/corpus/{ => default}/cur/37:2, (100%)
\r
283 rename test/corpus/{ => default}/cur/38:2, (100%)
\r
284 rename test/corpus/{ => default}/cur/39:2, (100%)
\r
285 rename test/corpus/{ => default}/cur/40:2, (100%)
\r
286 rename test/corpus/{ => default}/cur/41:2, (100%)
\r
287 rename test/corpus/{ => default}/cur/42:2, (100%)
\r
288 rename test/corpus/{ => default}/cur/43:2, (100%)
\r
289 rename test/corpus/{ => default}/cur/44:2, (100%)
\r
290 rename test/corpus/{ => default}/cur/45:2, (100%)
\r
291 rename test/corpus/{ => default}/cur/46:2, (100%)
\r
292 rename test/corpus/{ => default}/cur/47:2, (100%)
\r
293 rename test/corpus/{ => default}/cur/48:2, (100%)
\r
294 rename test/corpus/{ => default}/cur/49:2, (100%)
\r
295 rename test/corpus/{ => default}/cur/50:2, (100%)
\r
296 rename test/corpus/{ => default}/cur/51:2, (100%)
\r
297 rename test/corpus/{ => default}/cur/52:2, (100%)
\r
298 rename test/corpus/{ => default}/cur/53:2, (100%)
\r
299 create mode 100644 test/corpus/folders/01:2,
\r
300 create mode 100644 test/corpus/folders/02:2,
\r
301 create mode 100644 test/corpus/folders/bar/17:2,
\r
302 create mode 100644 test/corpus/folders/bar/18:2,
\r
303 create mode 100644 test/corpus/folders/bar/baz/05:2,
\r
304 create mode 100644 test/corpus/folders/bar/baz/23:2,
\r
305 create mode 100644 test/corpus/folders/bar/baz/24:2,
\r
306 create mode 100644 test/corpus/folders/bar/baz/cur/25:2,
\r
307 create mode 100644 test/corpus/folders/bar/baz/cur/26:2,
\r
308 create mode 100644 test/corpus/folders/bar/baz/new/27:2,
\r
309 create mode 100644 test/corpus/folders/bar/baz/new/28:2,
\r
310 create mode 100644 test/corpus/folders/bar/cur/19:2,
\r
311 create mode 100644 test/corpus/folders/bar/cur/20:2,
\r
312 create mode 100644 test/corpus/folders/bar/new/21:2,
\r
313 create mode 100644 test/corpus/folders/bar/new/22:2,
\r
314 create mode 100644 test/corpus/folders/cur/29:2,
\r
315 create mode 100644 test/corpus/folders/cur/30:2,
\r
316 create mode 100644 test/corpus/folders/cur/31:2,
\r
317 create mode 100644 test/corpus/folders/cur/32:2,
\r
318 create mode 100644 test/corpus/folders/cur/33:2,
\r
319 create mode 100644 test/corpus/folders/cur/34:2,
\r
320 create mode 100644 test/corpus/folders/cur/35:2,
\r
321 create mode 100644 test/corpus/folders/cur/36:2,
\r
322 create mode 100644 test/corpus/folders/cur/37:2,
\r
323 create mode 100644 test/corpus/folders/cur/38:2,
\r
324 create mode 100644 test/corpus/folders/cur/39:2,
\r
325 create mode 100644 test/corpus/folders/cur/40:2,
\r
326 create mode 100644 test/corpus/folders/cur/41:2,
\r
327 create mode 100644 test/corpus/folders/cur/42:2,
\r
328 create mode 100644 test/corpus/folders/cur/43:2,
\r
329 create mode 100644 test/corpus/folders/cur/44:2,
\r
330 create mode 100644 test/corpus/folders/cur/45:2,
\r
331 create mode 100644 test/corpus/folders/cur/46:2,
\r
332 create mode 100644 test/corpus/folders/cur/47:2,
\r
333 create mode 100644 test/corpus/folders/cur/48:2,
\r
334 create mode 100644 test/corpus/folders/cur/49:2,
\r
335 create mode 100644 test/corpus/folders/cur/50:2,
\r
336 create mode 100644 test/corpus/folders/cur/52:2,
\r
337 create mode 100644 test/corpus/folders/cur/53:2,
\r
338 create mode 100644 test/corpus/folders/foo/05:2,
\r
339 create mode 100644 test/corpus/folders/foo/06:2,
\r
340 create mode 100644 test/corpus/folders/foo/baz/11:2,
\r
341 create mode 100644 test/corpus/folders/foo/baz/12:2,
\r
342 create mode 100644 test/corpus/folders/foo/baz/cur/13:2,
\r
343 create mode 100644 test/corpus/folders/foo/baz/cur/14:2,
\r
344 create mode 100644 test/corpus/folders/foo/baz/new/15:2,
\r
345 create mode 100644 test/corpus/folders/foo/baz/new/16:2,
\r
346 create mode 100644 test/corpus/folders/foo/cur/07:2,
\r
347 create mode 100644 test/corpus/folders/foo/cur/08:2,
\r
348 create mode 100644 test/corpus/folders/foo/new/03:2,
\r
349 create mode 100644 test/corpus/folders/foo/new/09:2,
\r
350 create mode 100644 test/corpus/folders/foo/new/10:2,
\r
351 create mode 100644 test/corpus/folders/new/03:2,
\r
352 create mode 100644 test/corpus/folders/new/04:2,
\r
353 create mode 100644 test/test-databases/README
\r
354 create mode 100644 test/test-databases/database-v1.tar.gz
\r