export: Added --from option
This is similar to git-annex copy --from --to, in that it downloads a local copy, locks it for removal, uploads it, and drops it. Removal of the temporary local copy is done without verifying numcopies for the same reason as that command. I do wonder, looking at this, if there's a race where the local copy gets used as a copy to allow some other drop in the narrow window after it is downloaded and before it gets locked for removal. That would need some other repository to have an out of date location log that says the repository contains a copy of the key, in order for it to try to use it as a copy. If there is such a race, git-annex copy/move would also be vulnerable to it. It would be better to lock it for removal before starting to download it! That is possible in v10 repositories, which do use a separate content lock file. Note that, when the exported tree contains several files that use the same key, it will be downloaded repeatedly, once per time needed to upload it. It would be possible to avoid that extra work, but it would complicate this since the local copy would need to be preserved, locked for removal, until the end. Also, that would mean that interrupting the export would leave possibly a lot of temporarily downloaded keys in the local repository, while currently it can only leave one.
This commit is contained in:
parent
bd677bb65a
commit
7294d23d78
6 changed files with 76 additions and 31 deletions
|
@ -33,6 +33,8 @@ Planned schedule of work:
|
|||
* Working on `exportreeplus` branch which is groundwork for proxying to
|
||||
exporttree=yes special remotes. Need to merge it to master.
|
||||
|
||||
* A proxied exporttree=yes special remote is not untrusted, and should be.
|
||||
|
||||
* Handle cases where a single key is used by multiple files in the exported
|
||||
tree. Need to download from the special remote in order to export
|
||||
multiple copies to it. (In particular, this is needed when using
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue