git-annex/doc/git-annex-remotedaemon.mdwn
Joey Hess 29e73f76ef
Added remote.<name>.annex-push and remote.<name>.annex-pull
The former can be useful to make remotes that don't get fully synced with
local changes, which comes up in a lot of situations.

The latter was mostly added for symmetry, but could be useful (though less
likely to be).

Implementing `remote.<name>.annex-pull` was a bit tricky, as there's no one
place where git-annex pulls/fetches from remotes. I audited all
instances of "fetch" and "pull". A few cases were left not checking this
config:

* Git.Repair can try to pull missing refs from a remote, and if the local
  repo is corrupted, that seems a reasonable thing to do even though
  the config would normally prevent it.
* Assistant.WebApp.Gpg and Remote.Gcrypt and Remote.Git do fetches
  as part of the setup process of a remote. The config would probably not
  be set then, and having the setup fail seems worse than honoring it if it
  is already set.

I have not prevented all the code that does a "merge" from merging branches
from remotes with remote.<name>.annex-pull=false. That could perhaps
be done, but it would need a way to map from branch name to remote name,
and the way refspecs work makes that hard to get really correct. So if the
user fetches manually, the git-annex branch will get merged, for example.
Anther way of looking at/justifying this is that the setting is called
"annex-pull", not "annex-merge".

This commit was supported by the NSF-funded DataLad project.
2017-04-05 13:22:35 -04:00

61 lines
1.8 KiB
Markdown

# NAME
git-annex remotedaemon - persistent communication with remotes
# SYNOPSIS
git annex remotedaemon
# DESCRIPTION
The remotedaemon provides persistent communication with remotes.
It detects when git branches on remotes have changes, and fetches
the changes from them.
The assistant runs the remotedaemon and communicates with it on
stdio using a simple textual protocol.
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. 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.
# OPTIONS
* `--foreground`
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.
# SEE ALSO
[[git-annex]](1)
[[git-annex-assistant]](1)
[[git-annex-enable-tor]](1)
[[git-annex-p2p]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.