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:
parent
9dffd3d255
commit
e2c8dc6778
5 changed files with 58 additions and 15 deletions
|
@ -9,7 +9,7 @@ git annex lock `[path ...]`
|
|||
# DESCRIPTION
|
||||
|
||||
Use this to undo an unlock command if you don't want to modify
|
||||
the files, or have made modifications you want to discard.
|
||||
the files any longer, or have made modifications you want to discard.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
|
|
|
@ -11,8 +11,16 @@ git annex unlock `[path ...]`
|
|||
Normally, the content of annexed files is protected from being changed.
|
||||
Unlocking an annexed file allows it to be modified. This replaces the
|
||||
symlink for each specified file with a copy of the file's content.
|
||||
You can then modify it and `git annex add` (or `git commit`) to inject
|
||||
it back into the annex.
|
||||
You can then modify it and `git annex add` (or `git commit`) to save your
|
||||
changes.
|
||||
|
||||
In repositories with annex.version 5 or earlier, unlocking a file is local
|
||||
to the repository, and is temporary. With version 6, unlocking a file
|
||||
changes how it is stored in the git repository (from a symlink to a pointer
|
||||
file), so you can commit it like any other change. Also in version 6, you
|
||||
can use `git add` to add a fie to the annex in unlocked form. This allows
|
||||
workflows where a file starts out unlocked, is modified as necessary, and
|
||||
is locked once it reaches its final version.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue