On Thu, 27 Jan 2011, Jesse Rosenthal wrote: > Dear all, > > Just a note to say that I finally got around to updating the remote > usage script on the wiki to what I'm using now. With "--format=raw" in, > it's all pretty straightforward.
Hi Jesse, thanks for this. I wanted to do this since the --format=raw was merged, but didn't find the time for it. I have a few comments: > The only things the script does now are: > > 1. Produces a slight pause in the "notmuch show" output to avoid that > weird bug where emacs leaves off every tenth message or so. I added a comment to the script to explain the sleep there. Otherwise, people may delete the command because they think it is not needed. > 2. Locally caches raw messages (i.e. when --format=raw) is called. This > usually happens when getting attachments, so this is a nice way to > avoid having to download large attachments repeatedly. This is a good idea. > Note this just caches based on msg-id (or a hash thereof, to avoid > strange characters in file names). That means that if an attachment > is deleted on the server, the cache will be out of date. An easy way > to fix this would be to make the cache file name a concatenation of > the msg-id hash (check that first) and the hash of the actual message > (check that if the msg-id hash is there). I might put this in in the > future, especially if anyone else is using the script. > > 3. Escapes dollar signs in the msg-id to make shell-quoting over ssh > work. I think that quoting with printf -v args "%q " "$@" instead of sed would work more reliably (see bash(1)). > I've actually switched over to keeping my messages on my IMAP server and > using this remote script on all of my computers. It avoids any need for > syncing. It's been working very well for me so far. > > A future feature might be to integrate the ControlMaster feature of > openssh into the script, instead of having to open a connection > manually, but there are some complications there (dead sockets still > around if you go offline, etc.). In another project I worked around the dead sockets this way: sshgw() { local socket="$HOME/.ssh/cangw-connection" if [[ ! -S $socket ]] || ! ssh -x -a -S $socket root@192.168.2.3 true; then # Create master connection to speed up subsequent commands. ssh -N -f -M -S $socket root@192.168.2.3 >/dev/null 2>&1 fi ssh -x -a -S $socket root@192.168.2.3 "$@" } I guess this should work even for notmuch. -Michal _______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch