Re: Reimagining notmuch-git/nmbug

Subject: Re: Reimagining notmuch-git/nmbug

Date: Mon, 03 Apr 2023 06:49:51 -0300

To: Felipe Contreras,


From: David Bremner

Felipe Contreras <> writes:

> Hi,
> I noticed you promoted notmuch-git as a user tool to toy around with it.
> Very quickly I realized that most of what it does is something I've
> been working on for at least 10 years: making git work with other
> tools.
> I presume you haven't heard of git remote-helpers [1], because they do
> precisely what notmuch-git is trying to do.
> As a proof of concept I created a remote helper for notmuch [2]. If
> you have this script (`git-remote-nm`) anywhere in your path, git will
> interpret URLs prefixed with "nm::" as notmuch transports, and you can
> do:
>   git clone nm::$HOME/mail

I'm intrigued (and indeed I hadn't really thought about the degree to
which we were re-inventing git-fast-import and friends); however so far
my experiments did not get far enough to say anything conclusive.

I tried your script with the bindings from master (554690) but it does
not seem to like my split configuration, where the database lives in

    $ git clone nm::/home/bremner/Maildir     
    Cloning into 'Maildir'...
    /home/bremner/.config/scripts/git-remote-nm:164:in `initialize': failed to read/write file (Notmuch::FileError)
            from /home/bremner/.config/scripts/git-remote-nm:164:in `new'
            from /home/bremner/.config/scripts/git-remote-nm:164:in `<main>'

If I make a fake .notmuch directory, then it seems to work.  I'm not
sure if this is an issue with the bindings or with the script.
Conceptually there is also the question of how to handle split
configurations as a URL.

Performance-wise the initial clone seems pretty slow. For my 600k
messages I have been waiting a while now.  htop tells me that
git-fast-import has about 45 minutes of CPU time at this point.  This
machine is not that fast, but for comparison an initial (i.e. fresh
repo, no caching) "notmuch git commit" takes about 15-20s.

If you need a larger corpus of messages to play with, the notmuch
performance suite includes about 400k messages, and running
will build a notmuch database that you can clone.
notmuch mailing list --
To unsubscribe send an email to