summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* 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.
* devblogGravatar Joey Hess2017-09-07
|
* mention git-annex exportGravatar Joey Hess2017-09-07
|
* updateGravatar Joey Hess2017-09-07
|
* correctionGravatar Joey Hess2017-09-07
|
* commentGravatar Joey Hess2017-09-07
|
* Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2017-09-07
|\
* \ Merge branch 'export'Gravatar Joey Hess2017-09-07
|\ \
| * | interrupted export recovery bugfixesGravatar Joey Hess2017-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an export was interrupted, the sqlite database won't have been committed necessarily. Also, the interrupted export might have been run in an entirely different repository. There's not a significant speed benefit in checking getExportLocation in this case anyway, so avoid it. Also, remove the old filename from the export database. Recovery from interrupted exports is now tested working. This commit was supported by the NSF-funded DataLad project.
| * | avoid renaming to temp files before deletingGravatar Joey Hess2017-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only rename when actually ncessary. The diff gets buffered in memory. Probably git has to buffer a diff in memory when generating it as well, so this memory usage should not be a problem, even when the diff is very large. I hope. This commit was supported by the NSF-funded DataLad project.
| * | prevent exporttree=yes on remotes that don't support exportsGravatar Joey Hess2017-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | Don't allow "exporttree=yes" to be set when the special remote does not support exports. That would be confusing since the user would set up a special remote for exports, but `git annex export` to it would later fail. 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.
| | * (no commit message)Gravatar Horus2017-09-07
| | |
| | * Added a commentGravatar Horus2017-09-07
| | |
| | * Added a commentGravatar anthony@ad39673d230d75cbfd19d2757d754030049c76732017-09-06
| |/ |/|
* | devblogGravatar Joey Hess2017-09-06
| |
| * 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.
| * bugfixGravatar Joey Hess2017-09-06
| |
| * Merge branch 'master' into exportGravatar Joey Hess2017-09-06
| |\ | |/ |/|
| * rename bug fixGravatar Joey Hess2017-09-06
| |
| * todoGravatar Joey Hess2017-09-06
| |
| * 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.
| * record incomplete exports in export.logGravatar Joey Hess2017-09-06
| | | | | | | | | | | | | | | | | | | | Not yet used, but essential for resuming cleanly. Note that, in normmal operation, only one commit is made to export.log during an export; the incomplete version only gets to the journal and is then overwritten. 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.
* | Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2017-09-06
|\ \
* | | move line break to fix broken linkGravatar Edward Betts2017-09-06
| | |
* | | updateGravatar Joey Hess2017-09-06
| | |
| * | (no commit message)Gravatar karel-de-macil2017-09-06
|/ /
* | Added datalad "super-dataset".Gravatar yarikoptic2017-09-05
| |
* | removedGravatar EskildHustvedt2017-09-05
| |
* | Added a comment: Partial exportsGravatar EskildHustvedt2017-09-05
| |
* | Added a comment: Partial exportsGravatar EskildHustvedt2017-09-05
| |
* | (no commit message)Gravatar eacousineau2017-09-05
| |
* | Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2017-09-04
|\ \
* | | devblogGravatar Joey Hess2017-09-04
| | |
| | * add export infication to git-annex infoGravatar Joey Hess2017-09-04
| | |
| | * git annex get from exportsGravatar Joey Hess2017-09-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Straightforward enough, except for the needed belt-and-suspenders sanity checks to avoid foot shooting due to exports not being key/value stores. * Even when annex.verify=false, always verify from exports. * Only get files from exports that use a backend that supports checksum verification. * Never trust exports, even if the user says to, because then `git annex drop` would drop content if the export seemed to contain a copy. 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.
| | * update for exportGravatar Joey Hess2017-09-04
| | |
| | * flush queued changes to export db on exitGravatar Joey Hess2017-09-04
| | |
| | * remove some backtraces on user errorsGravatar Joey Hess2017-09-04
| | |
| | * track exported files in a sqlite databaseGravatar Joey Hess2017-09-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | Went with a separate db per export remote, rather than a single export database. Mostly because there will probably not be a lot of separate export remotes, and it might be convenient to be able to delete a given remote's export database. 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.
| * | Added a commentGravatar vgp2017-09-01
|/ /
| * 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
* | devblogGravatar Joey Hess2017-08-31
| |
| * 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.
| * implement export.log and resolve export conflictsGravatar Joey Hess2017-08-31
| | | | | | | | | | | | Incremental export updates work now too. This commit was sponsored by Anthony DeRobertis on Patreon.
| * 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.