diff options
author | Joey Hess <joey@kitenet.net> | 2013-12-26 18:23:13 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-12-26 18:23:13 -0400 |
commit | f8dd20a34d7851d7e3827387d323ffab585a25a2 (patch) | |
tree | 49e95430ce8e76bba061ba84f65a8550110cf830 /Remote/List.hs | |
parent | 629a103affcf2703098e0af77c69e19f03df4f06 (diff) |
external special remotes mostly implemented (untested)
This has not been tested at all. It compiles!
The only known missing things are support for encryption, and for get/set
of special remote configuration, and of key state. (The latter needs
separate work to add a new per-key log file to store that state.)
Only thing I don't much like is that initremote needs to be passed both
type=external and externaltype=foo. It would be better to have just
type=foo
Most of this is quite straightforward code, that largely wrote itself given
the types. The only tricky parts were:
* Need to lock the remote when using it to eg make a request, because
in theory git-annex could have multiple threads that each try to use
a remote at the same time. I don't think that git-annex ever does
that currently, but better safe than sorry.
* Rather than starting up every external special remote program when
git-annex starts, they are started only on demand, when first used.
This will avoid slowdown, especially when running fast git-annex query
commands. Once started, they keep running until git-annex stops, currently,
which may not be ideal, but it's hard to know a better time to stop them.
* Bit of a chicken and egg problem with caching the cost of the remote,
because setting annex-cost in the git config needs the remote to already
be set up. Managed to finesse that.
This commit was sponsored by Lukas Anzinger.
Diffstat (limited to 'Remote/List.hs')
-rw-r--r-- | Remote/List.hs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Remote/List.hs b/Remote/List.hs index d53b92912..d01d23944 100644 --- a/Remote/List.hs +++ b/Remote/List.hs @@ -35,6 +35,7 @@ import qualified Remote.WebDAV #endif import qualified Remote.Glacier import qualified Remote.Hook +import qualified Remote.External remoteTypes :: [RemoteType] remoteTypes = @@ -52,6 +53,7 @@ remoteTypes = #endif , Remote.Glacier.remote , Remote.Hook.remote + , Remote.External.remote ] {- Builds a list of all available Remotes. |