On Sat, Feb 09 2013, david at tethera.net wrote: > From: David Bremner <bremner at debian.org> > > In the case of large changes to the database from git, one of main > current bottlenecks is the large number of execs of notmuch tag. This > avoids that by using use the batch tagging facilities as of notmuch > 0.15. > > We use "spawn" directly rather than inventing a "notmuch_pipe", since > it seems the only place we need to pipe to notmuch so far. > ---
The code LGTM. Is there any quoting differences between these 2 tagging methods ? > This is only lightly tested; please make sure you have backups of your > database. Do I dare to test -- I'm lazy taking backups (I don't know how to take one -- and especially how to restore one ;) > I'm not 100% sure about the indentation. No doubt Tomi will let me > know if it can be improved. No doubt... Tomi > > contrib/nmbug/nmbug | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/contrib/nmbug/nmbug b/contrib/nmbug/nmbug > index f003ef9..c66c526 100755 > --- a/contrib/nmbug/nmbug > +++ b/contrib/nmbug/nmbug > @@ -270,17 +270,22 @@ sub do_sync { > $D_action = '-'; > } > > - foreach my $pair (@{$status->{added}}) { > + my $notmuch = spawn ({}, '|-', qw/notmuch tag --batch/) > + or die 'notmuch tag --batch'; > > - notmuch ('tag', $A_action.$TAGPREFIX.$pair->{tag}, > - 'id:'.$pair->{id}); > + foreach my $pair (@{$status->{added}}) { > + print $notmuch $A_action.$TAGPREFIX.$pair->{tag}, " -- ", > + 'id:'.$pair->{id}; > } > > foreach my $pair (@{$status->{deleted}}) { > - notmuch ('tag', $D_action.$TAGPREFIX.$pair->{tag}, > - 'id:'.$pair->{id}); > + print $notmuch $D_action.$TAGPREFIX.$pair->{tag}, > + 'id:'.$pair->{id}; > } > > + unless (close $notmuch) { > + die "'notmuch tag --batch' exited with nonzero value\n"; > + } > } > > > -- > 1.7.10.4 > > _______________________________________________ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch