v6 git-annex unlock

Note that the implementation uses replaceFile, so that the actual
replacement of the work tree file is atomic. This seems a good property to
have!

It would be possible for unlock in v6 mode to be run on files that do not
have their content present. However, that would be a behavior change from
before, and I don't see any immediate need to support it, so I didn't
implement it.
This commit is contained in:
Joey Hess 2015-12-10 16:12:05 -04:00
parent 9dffd3d255
commit e2c8dc6778
Failed to extract signature
5 changed files with 58 additions and 15 deletions

View file

@ -325,6 +325,9 @@ files to be unlocked, while the indirect upgrades don't touch the files.
#### implementation todo list
* Dropping a smudged file causes git status to show it as modified,
because the timestamp has changed. Avoid this by preserving timestamp
of smudged files when manipulating.
* linkAnnex should check disk reserve when it falls back to copying the
file.
* Reconcile staged changes into the associated files database, whenever
@ -337,10 +340,6 @@ files to be unlocked, while the indirect upgrades don't touch the files.
(when not in direct mode).
However, beware over-optimisation breaking the assistant or perhaps other
long-lived processes.
* Convert `git annex unlock` to stage a pointer file, and hard link to the
annexed object (or write pointer file if annexed object not present).
- Also needs to thaw annex object file
- Also needs to update associated files db.
* Convert `git annex lock` to verify that worktree file is not modified
(same check used when updating pointer files to the content of a key),
and then delete the worktree file and replace with an annex symlink.