git annex remotedaemon
The remotedaemon provides persistent communication with remotes.
Several types of remotes are supported:
For ssh remotes, the remotedaemon tries to maintain a connection to the remote git repository, and uses git-annex-shell notifychanges to detect when the remote git repository has changed, and fetches changes from it. For this to work, the git remote must have git-annex-shell(1) installed, with notifychanges support. The first version of git-annex-shell that supports it is 5.20140405.
For tor-annex remotes, the remotedaemon runs a tor hidden service, accepting connections from other nodes and serving up the contents of the repository. This is only done if you first run git annex enable-tor. Use git annex p2p to configure access to tor-annex remotes.
Note that when remote.<name>.annex-pull is set to false, the remotedaemon will avoid fetching changes from that remote.
Don't fork to the background, and communicate on stdin/stdout using a simple textual protocol. The assistant runs the remotedaemon this way.
Commands in the protocol include LOSTNET, which tells the remotedaemon that the network connection has been lost, and causes it to stop any TCP connctions. That can be followed by RESUME when the network connection comes back up.
Joey Hess <email@example.com>
git-annex(1), git-annex-enable-tor(1), git-annex-p2p(1), git-remote-tor-annex(1).