6c565ec905
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. |
||
---|---|---|
.. | ||
DirWatcher | ||
Applicative.hs | ||
Base64.hs | ||
Batch.hs | ||
CoProcess.hs | ||
CopyFile.hs | ||
Daemon.hs | ||
Data.hs | ||
DataUnits.hs | ||
DBus.hs | ||
Directory.hs | ||
DirWatcher.hs | ||
DiskFree.hs | ||
Dot.hs | ||
Env.hs | ||
Exception.hs | ||
ExternalSHA.hs | ||
FileMode.hs | ||
FileSystemEncoding.hs | ||
Format.hs | ||
FreeDesktop.hs | ||
Gpg.hs | ||
Hash.hs | ||
HumanNumber.hs | ||
HumanTime.hs | ||
InodeCache.hs | ||
JSONStream.hs | ||
libdiskfree.c | ||
libdiskfree.h | ||
libkqueue.c | ||
libkqueue.h | ||
libmounts.c | ||
libmounts.h | ||
LogFile.hs | ||
Lsof.hs | ||
Matcher.hs | ||
Metered.hs | ||
Misc.hs | ||
Monad.hs | ||
Mounts.hsc | ||
Network.hs | ||
NotificationBroadcaster.hs | ||
OSX.hs | ||
Parallel.hs | ||
PartialPrelude.hs | ||
Path.hs | ||
Percentage.hs | ||
Process.hs | ||
QuickCheck.hs | ||
Quvi.hs | ||
Rsync.hs | ||
SafeCommand.hs | ||
Scheduled.hs | ||
Shell.hs | ||
SRV.hs | ||
SshConfig.hs | ||
Tense.hs | ||
ThreadLock.hs | ||
ThreadScheduler.hs | ||
TList.hs | ||
Tmp.hs | ||
Touch.hsc | ||
Url.hs | ||
UserInfo.hs | ||
Verifiable.hs | ||
WebApp.hs | ||
Yesod.hs |