summaryrefslogtreecommitdiff
path: root/doc/design/external_special_remote_protocol.mdwn
Commit message (Collapse)AuthorAge
* add GETAVAILABILITY to external special remote protocolGravatar Joey Hess2014-01-13
| | | | | And some reworking of types, and added an annex-availability git config setting.
* external special remote protocol: Added GETGITDIR.Gravatar Joey Hess2014-01-13
|
* add DEBUGGravatar Joey Hess2014-01-07
|
* notes on long-running network connectionsGravatar Joey Hess2014-01-06
|
* add remote state logsGravatar Joey Hess2014-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | This allows a remote to store a piece of arbitrary state associated with a key. This is needed to support Tahoe, where the file-cap is calculated from the data stored in it, and used to retrieve a key later. Glacier also would be much improved by using this. GETSTATE and SETSTATE are added to the external special remote protocol. Note that the state is left as-is even when a key is removed from a remote. It's up to the remote to decide when it wants to clear the state. The remote state log, $KEY.log.rmt, is a UUID-based log. However, rather than using the old UUID-based log format, I created a new variant of that format. The new varient is more space efficient (since it lacks the "timestamp=" hack, and easier to parse (and the parser doesn't mess with whitespace in the value), and avoids compatability cruft in the old one. This seemed worth cleaning up for these new files, since there could be a lot of them, while before UUID-based logs were only used for a few log files at the top of the git-annex branch. The transition code has also been updated to handle these new UUID-based logs. This commit was sponsored by Daniel Hofer.
* added GETWANTED, SETWANTED for Tobias's flickr remoteGravatar Joey Hess2014-01-01
| | | | | | | | | | | | | | | This was unexpectedly difficult because of a depdenency cycle. To parse a preferred content expression involves several things that need to operate on the list of remotes. Which needs Remote.External. The only way to avoid this cycle (I tried breaking it at several points) was to skip parsing the expression in SETWANTED. That's sorta ok, because git-annex already has to deal with unparsable preferred content expressions being stored, in order to handle eg, upgrades. But I'm still not very happy that I cannot check it. I feel this is a strong indication that I need to beware of further bloating the special remote protocol interface.
* external special remote protocol: Added GETUUID.Gravatar Joey Hess2013-12-31
|
* mention that INITREMOTE is also called by git-annex enableremoteGravatar Joey Hess2013-12-29
|
* implement PREPARE-FAILURE for TobiasGravatar Joey Hess2013-12-29
|
* add webapp support to TODOGravatar Joey Hess2013-12-27
|
* add credential storage support for external special remotes & update exampleGravatar Joey Hess2013-12-27
|
* hint about PROGRESS throttlingGravatar Joey Hess2013-12-27
|
* todo: url listsGravatar Joey Hess2013-12-27
|
* defer SETSTATE and GETSTATE for nowGravatar Joey Hess2013-12-27
| | | | | TAHOE-LAFS may use these eventually, but that's TBD and none of git-annex's own special remotes need that, except for the web special remote's urls.
* implement GETCONFIG and SETCONFIGGravatar Joey Hess2013-12-27
| | | | | | | | | | | Changed protocol spec to make SETCONFIG only store it persistently when run during INITREMOTE. I see no reason to support storing it persistently at other times, and doing so would unnecessarily complicate the code. Also, letting that be done would probably result in use for storing data that doesn't really belong there, and special remote authors who don't understand how the union merging works would probably be surprised the results.
* updateGravatar Joey Hess2013-12-27
|
* improve commentsGravatar Joey Hess2013-12-27
|
* don't send PREPARE before INITREMOTEGravatar Joey Hess2013-12-27
| | | | | | | | That complicated special remote programs, because they had to avoid making PREPARE fail if some configuration is missing, because the remote might not be initialized yet. Instead, complicate git-annex slightly by only sending PREPARE immediately before some other request other than INITREMOTE (or PREPARE of course).
* make some requests optional, simplify and future-proof protocol moreGravatar Joey Hess2013-12-27
|
* external special remote documentation and example scriptGravatar Joey Hess2013-12-26
|
* simplify PROGRESSGravatar Joey Hess2013-12-26
| | | | Only one transfer will be running at a time, per external special remote.
* future-proofingGravatar Joey Hess2013-12-25
|
* basic data types and serialization for external special remote protocolGravatar Joey Hess2013-12-25
| | | | | | | | | | This is mostly straightforward, but did turn out quite nicely stronly typed, and with a quite nice automatic tokenization and parsing of received messages. Made a few minor changes to the protocol to clear up ambiguities and make it easier to parse. Note particularly that setting remote configuration is moved to a separate command, which allows a remote to set arbitrary data.
* simplifyGravatar Joey Hess2013-12-16
|
* use messages for query responses to allow communicating errorGravatar Joey Hess2013-12-16
|
* rename HAS to CHECKPRESENT for consistency with hook special remoteGravatar Joey Hess2013-12-13
|
* refine protocolGravatar Joey Hess2013-12-11
| | | | | | More complicated, but less asynchronous, which will make it easier for special remote programs to use it, at the expense of some added complexity in git-annex.
* updateGravatar Joey Hess2013-12-11
|
* clarifyGravatar Joey Hess2013-12-11
|
* updateGravatar Joey Hess2013-12-11
|
* reorderGravatar Joey Hess2013-12-11
|
* layoutGravatar Joey Hess2013-12-11
|
* add ERRORGravatar Joey Hess2013-12-11
|
* updateGravatar Joey Hess2013-12-11
|
* fixfixGravatar Joey Hess2013-12-11
|
* fix display of |Gravatar Joey Hess2013-12-11
|
* add design documentGravatar Joey Hess2013-12-11