aboutsummaryrefslogtreecommitdiff
path: root/doc/design
Commit message (Collapse)AuthorAge
* wordingGravatar Joey Hess2018-03-07
|
* implemented git-annex-shell p2pstdioGravatar Joey Hess2018-03-07
| | | | | | | | | | | Not yet used by git-annex, but this will allow faster transfers etc than using individual ssh connections and rsync. Not called git-annex-shell p2p, because git-annex p2p does something else and I don't want two subcommands with the same name between the two for sanity reasons. This commit was sponsored by Øyvind Andersen Holm.
* add formal description of the P2P protocolGravatar Joey Hess2018-03-07
| | | | This commit was sponsored by Fernando Jimenez on Patreon.
* remove spamGravatar Joey Hess2018-02-22
|
* Added a comment: iTunes Error 56 AppleGravatar avdhusingh6497@d72e8319bb7c179778775a8b096b120fc219fbad2018-02-22
|
* Added a comment: iTunes Error 56 AppleGravatar avdhusingh6497@d72e8319bb7c179778775a8b096b120fc219fbad2018-02-22
|
* Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2018-02-07
|\
* \ Merge branch 'EXTENSIONS'Gravatar Joey Hess2018-02-07
|\ \
| | * Added a commentGravatar yarikoptic2018-02-07
| |/ |/|
* | commentGravatar Joey Hess2018-02-07
| |
| * Added EXTENSIONS to external special remote protocol.Gravatar Joey Hess2018-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows using new special remote messages when git-annex supports them, and avoiding using them when git-annex is too old. The new INFO is one such message. There's also the possibility, currently unused, for the special remote's reply to include some kind of extensions of its own. Merging this is blocked by https://github.com/datalad/datalad/issues/2124 since it seems it will break datalad. I checked all the other special remotes and they will be ok. This commit was supported by the NSF-funded DataLad project.
* | Added a commentGravatar yarikoptic2018-02-07
|/
* responseGravatar Joey Hess2018-02-07
|
* Added a comment: protocol messageGravatar yarikoptic2018-02-06
|
* reviewed all external special remotes for change feasabilityGravatar Joey Hess2018-02-06
|
* Added INFO to external special remote protocol.Gravatar Joey Hess2018-02-06
| | | | | | | It's left up to the special remote to detect when git-annex is new enough to support the message; an old git-annex will blow up. This commit was supported by the NSF-funded DataLad project.
* poll vote (DCIM directory (photos and videos only))Gravatar 50.1.201.2522017-12-30
|
* poll vote (/sdcard/annex)Gravatar 85.144.94.1482017-10-16
|
* updateGravatar Joey Hess2017-09-18
|
* move tracking exports to designGravatar Joey Hess2017-09-18
|
* implement removeExportDirectoryGravatar Joey Hess2017-09-15
| | | | | | | | | | | | | | | Not yet called by Command.Export. WebDAV needs this to clean up empty collections. Also, example.sh turned out to not be cleaning up directories when removing content from them, so it made sense for it to use this. Remote.Directory did not need it, and since its cleanup method for empty directories is more efficient than what Command.Export will need to do to find empty directories, it uses Nothing so that extra work can be avoided. This commit was sponsored by Thom May on Patreon.
* External special remote protocol extended to support export.Gravatar Joey Hess2017-09-08
| | | | | | Also updated example.sh to support export. This commit was supported by the NSF-funded DataLad project.
* document new stuff for external special remotesGravatar Joey Hess2017-09-07
| | | | | | | Got rid of RENAMEEXPORT-UNSUPPORTED, no reason not to use RENAMEEXPORT-FAILURE for that. This commit was supported by the NSF-funded DataLad project.
* fix consistency bug reading from export databaseGravatar Joey Hess2017-09-06
| | | | | | | | | | | | | | | | | | | The export database has writes made to it and then expects to read back the same data immediately. But, the way that Database.Handle does writes, in order to support multiple writers, makes that not work, due to caching issues. This resulted in export re-uploading files it had already successfully renamed into place. Fixed by allowing databases to be opened in MultiWriter or SingleWriter mode. The export database only needs to support a single writer; it does not make sense for multiple exports to run at the same time to the same special remote. All other databases still use MultiWriter mode. And by inspection, nothing else in git-annex seems to be relying on being able to immediately query for changes that were just written to the database. This commit was supported by the NSF-funded DataLad project.
* export file renamingGravatar Joey Hess2017-09-06
| | | | | | | | | | | | | | | | | This is seriously super hairy. It has to handle interrupted exports, which may be resumed with the same or a different tree. It also has to recover from export conflicts, which could cause the wrong content to be renamed to a file. I think this works, or is close to working. See the update to the design for how it works. This is definitely not optimal, in that it does more renames than are necessary. It would probably be worth finding the keys that are really renamed and only renaming those. But let's get the "simple" approach to work first.. This commit was supported by the NSF-funded DataLad project.
* thoughts on handling renames efficientlyGravatar Joey Hess2017-09-06
| | | | | | This gets complicated, but I think this design will work! This commit was supported by the NSF-funded DataLad project.
* use export db to correctly handle duplicate filesGravatar Joey Hess2017-09-04
| | | | | | | | | | | | | | | | | Removed uncorrect UniqueKey key in db schema; a key can appear multiple times with different files. The database has to be flushed after each removal. But when adding files to the export, lots of changes are able to be queued up w/o flushing. So it's still fairly efficient. If large removals of files from exports are too slow, an alternative would be to make two passes over the diff, one pass queueing deletions from the database, then a flush and the a second pass updating the location log. But that would use more memory, and need to look up exportKey twice per removed file, so I've avoided such optimisation yet. This commit was supported by the NSF-funded DataLad project.
* implement exporttree=yes configurationGravatar Joey Hess2017-09-04
| | | | | | | | | | | | | | | | * Only export to remotes that were initialized to support it. * Prevent storing key/value on export remotes. * Prevent enabling exporttree=yes and encryption in the same remote. SetupStage Enable was changed to take the old RemoteConfig. This allowed only setting exporttree when initially setting up a remote, and not configuring it later after stuff might already be stored in the remote. Went with =yes rather than =true for consistency with other parts of git-annex. Changed docs accordingly. This commit was supported by the NSF-funded DataLad project.
* refactor ExportActionsGravatar Joey Hess2017-09-01
| | | | | | | | This will allow disabling exports for remotes that are not configured to allow them. Also, exportSupported will be useful for the external special remote to probe. This commit was supported by the NSF-funded DataLad project
* graft exported tree into git-annex branchGravatar Joey Hess2017-08-31
| | | | | | | | | | | So it will be available later and elsewhere, even after GC. I first though to use git update-index to do this, but feeding it a line with a tree object seems to always cause it to generate a git subtree merge. So, fell back to using the Git.Tree interface to maniupulate the trees, and not involving the git-annex branch index file at all. This commit was sponsored by Andreas Karlsson.
* make storeExport atomicGravatar Joey Hess2017-08-31
| | | | | | | | | | | | | | | | | | This avoids needing to deal with the complexity of partially transferred files in the export. We'd not be able to resume uploading to such a file anyway, so just avoid them. The implementation in Remote.Directory is not completely ideal, because it could leave the temp file hanging around in the export directory. This only happens if it's killed with -9, or there's a power failure; normally viaTmp cleans up after itself, even when interrupted. I could not see a better way to do it though, since the export directory might be the root of a filesystem. Also some design thoughts on resuming, which depend on storeExport being atomic. This commit was sponsored by Fernando Jimenez on Partreon.
* resuming exportsGravatar Joey Hess2017-08-31
| | | | | | | | | | | | | Make a pass over the whole exported tree, and upload anything that has not yet reached the export. Update location log when exporting. Note that the synthesized keys for non-annexed files are stored in the location log too. Some cases involving files in the tree with the same content are not handled correctly yet. This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
* a few tweaks to the designGravatar Joey Hess2017-08-30
|
* devblogGravatar Joey Hess2017-08-29
|
* simplifyGravatar Joey Hess2017-08-28
| | | | Key is needed to use in reply
* update proposed external special remote protocolGravatar Joey Hess2017-08-28
|
* fix linkGravatar Joey Hess2017-08-28
|
* formattingGravatar Joey Hess2017-08-28
|
* typoGravatar Joey Hess2017-08-28
|
* external: nice error message for keys with spaces in their nameGravatar Joey Hess2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | External special remotes will refuse to operate on keys with spaces in their names. That has never worked correctly due to the design of the external special remote protocol. Display an error message suggesting migration. Not super happy with this, but it's a pragmatic solution. Better than complicating the external special remote interface and all external special remotes. Note that I only made it use SafeKey in Request, not Response. git-annex does not construct a Response, so that would not add any safety. And presumably, if git-annex avoids feeding any such keys to an external special remote, it will never have a reason to make a Response using such a key. If it did, it would result in a protocol error anyway. There's still a Serializeable instance for Key; it's used by P2P.Protocol. There, the Key is always in the final position, so it's ok if it contains spaces. Note that the protocol documentation has been fixed to say that the File may contain spaces. One way that can happen, even though the Key can't, is when using direct mode, and the work tree filename contains spaces. When sending such a file to the external special remote the worktree filename is used. This commit was sponsored by Thom May on Patreon.
* responses, bug I noticedGravatar Joey Hess2017-08-15
|
* Added a comment: Git HistoryGravatar xloem2017-08-10
|
* removedGravatar timothy.sanders@a7ce3a8bae11a60e0c4cda9cb4aef24ec459bbab2017-07-17
|
* Added a comment: Google Drive and Archive.orgGravatar timothy.sanders@a7ce3a8bae11a60e0c4cda9cb4aef24ec459bbab2017-07-17
|
* Added a comment: export "each revision" -- thinking about quiltdataGravatar yarikoptic2017-07-14
|
* Added a comment: comments on protocolGravatar yarikoptic2017-07-12
|
* Added a comment: regarding setting a URL by custom special remoteGravatar yarikoptic2017-07-12
|
* Added a comment: side-note about WebDAV&DeltaVGravatar yarikoptic2017-07-12
|
* commentGravatar Joey Hess2017-07-12
|
* Added a comment: special remotes with versioning supportGravatar yarikoptic2017-07-12
|