Applying patches directly from emails?
[notmuch-archives.git] / e7 / 72a8265fb6893bb82086d7b51bbeb6339479dd
1 Return-Path: <bremner@tethera.net>\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 B950A431FC0\r
6         for <notmuch@notmuchmail.org>; Wed, 20 Feb 2013 14:24:54 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: 0\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
12         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 N8JYgTnVVb0v for <notmuch@notmuchmail.org>;\r
16         Wed, 20 Feb 2013 14:24:54 -0800 (PST)\r
17 Received: from tesseract.cs.unb.ca (tesseract.cs.unb.ca [131.202.240.238])\r
18         (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))\r
19         (No client certificate requested)\r
20         by olra.theworths.org (Postfix) with ESMTPS id 05862431FAE\r
21         for <notmuch@notmuchmail.org>; Wed, 20 Feb 2013 14:24:53 -0800 (PST)\r
22 Received: from fctnnbsc30w-156034082078.dhcp-dynamic.fibreop.nb.bellaliant.net\r
23         ([156.34.82.78] helo=zancas.localnet)\r
24         by tesseract.cs.unb.ca with esmtpsa\r
25         (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80)\r
26         (envelope-from <bremner@tethera.net>)\r
27         id 1U8I5r-00086T-0j; Wed, 20 Feb 2013 18:24:51 -0400\r
28 Received: from bremner by zancas.localnet with local (Exim 4.80)\r
29         (envelope-from <bremner@tethera.net>)\r
30         id 1U8I5l-00028H-AF; Wed, 20 Feb 2013 18:24:45 -0400\r
31 From: david@tethera.net\r
32 To: notmuch@notmuchmail.org\r
33 Subject: [Patch v2 2/4] nmbug: use 'notmuch tag --batch'\r
34 Date: Wed, 20 Feb 2013 18:24:35 -0400\r
35 Message-Id: <1361399077-7737-3-git-send-email-david@tethera.net>\r
36 X-Mailer: git-send-email 1.7.10.4\r
37 In-Reply-To: <1361399077-7737-1-git-send-email-david@tethera.net>\r
38 References: <1361399077-7737-1-git-send-email-david@tethera.net>\r
39 X-Spam_bar: -\r
40 Cc: David Bremner <bremner@debian.org>\r
41 X-BeenThere: notmuch@notmuchmail.org\r
42 X-Mailman-Version: 2.1.13\r
43 Precedence: list\r
44 List-Id: "Use and development of the notmuch mail system."\r
45         <notmuch.notmuchmail.org>\r
46 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
47         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
48 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
49 List-Post: <mailto:notmuch@notmuchmail.org>\r
50 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
51 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
52         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
53 X-List-Received-Date: Wed, 20 Feb 2013 22:24:55 -0000\r
54 \r
55 From: David Bremner <bremner@debian.org>\r
56 \r
57 This should be more robust with respect to tags with whitespace and\r
58 and other special characters. It also (hopefully) fixes a remaining\r
59 bug handling message-ids with whitespace.  It should also be\r
60 noticeably faster for large sets of changes since it does one exec per\r
61 change set as opposed to one exec per tag changed.\r
62 ---\r
63  devel/nmbug/nmbug |   27 ++++++++++++++++++++++-----\r
64  1 file changed, 22 insertions(+), 5 deletions(-)\r
65 \r
66 diff --git a/devel/nmbug/nmbug b/devel/nmbug/nmbug\r
67 index befc3d9..73d64fe 100755\r
68 --- a/devel/nmbug/nmbug\r
69 +++ b/devel/nmbug/nmbug\r
70 @@ -267,6 +267,20 @@ sub do_checkout {\r
71    do_sync (action => 'checkout');\r
72  }\r
73  \r
74 +sub quote_for_xapian {\r
75 +  my $str = shift;\r
76 +  $str =~ s/"/""/g;\r
77 +  return '"' . $str . '"';\r
78 +}\r
79 +\r
80 +sub pair_to_batch_line {\r
81 +  my ($action, $pair) = @_;\r
82 +\r
83 +  # the tag should already be suitably encoded\r
84 +\r
85 +  return $action . $ENCPREFIX . $pair->{tag} .\r
86 +    ' -- id:' . quote_for_xapian ($pair->{id})."\n";\r
87 +}\r
88  \r
89  sub do_sync {\r
90  \r
91 @@ -283,17 +297,20 @@ sub do_sync {\r
92      $D_action = '-';\r
93    }\r
94  \r
95 -  foreach my $pair (@{$status->{added}}) {\r
96 +  my $notmuch = spawn ({}, '|-', qw/notmuch tag --batch/)\r
97 +    or die 'notmuch tag --batch';\r
98  \r
99 -    notmuch ('tag', $A_action.$TAGPREFIX.$pair->{tag},\r
100 -            'id:'.$pair->{id});\r
101 +  foreach my $pair (@{$status->{added}}) {\r
102 +    print $notmuch pair_to_batch_line ($A_action, $pair);\r
103    }\r
104  \r
105    foreach my $pair (@{$status->{deleted}}) {\r
106 -    notmuch ('tag', $D_action.$TAGPREFIX.$pair->{tag},\r
107 -            'id:'.$pair->{id});\r
108 +    print $notmuch pair_to_batch_line ($D_action, $pair);\r
109    }\r
110  \r
111 +  unless (close $notmuch) {\r
112 +    die "'notmuch tag --batch' exited with nonzero value\n";\r
113 +  }\r
114  }\r
115  \r
116  \r
117 -- \r
118 1.7.10.4\r
119 \r