Remote usage script updated
Michal Sojka
sojkam1 at fel.cvut.cz
Fri Feb 4 23:38:33 PST 2011
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 at 192.168.2.3 true; then
# Create master connection to speed up subsequent commands.
ssh -N -f -M -S $socket root at 192.168.2.3 >/dev/null 2>&1
fi
ssh -x -a -S $socket root at 192.168.2.3 "$@"
}
I guess this should work even for notmuch.
-Michal
More information about the notmuch
mailing list