why this cannot be fixed in v5 mode
This commit is contained in:
parent
01f5698060
commit
fa031291d6
1 changed files with 32 additions and 0 deletions
|
@ -0,0 +1,32 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 1"""
|
||||
date="2016-07-12T16:23:51Z"
|
||||
content="""
|
||||
In v5 mode, there is a complex interaction between unannex and the
|
||||
pre-commit hook. An unannexed file looks quite a lot like an unlocked file,
|
||||
so the pre-commit hook is prone to want to lock it, and so add it back to
|
||||
the annex as an annexed file.
|
||||
|
||||
To avoid that problem, unannex needs to commit the unannexing of the
|
||||
files.
|
||||
|
||||
However, if you have other staged changes, they'll also be included in that
|
||||
commit. Which would be a bug if it were allowed to happen. This is why
|
||||
it checks for a clean index first.
|
||||
|
||||
It would be possible to improve the behavior by explicitly committing only
|
||||
the files that got unannexed, rather than all staged changes. Why didn't I
|
||||
do that?
|
||||
|
||||
Well, `git commit $file` stages any changes to the file's content before
|
||||
committing. When the file has been unannexed, this stages the entire large
|
||||
file content into git, and adds it back. Not the desired behavior!
|
||||
|
||||
Git in fact has no interface to make it commit only staged changes to
|
||||
only specific files. I can't get there from here. It would certianly
|
||||
be nice if git got the ability to do that, if someone wants a project to
|
||||
improve git.
|
||||
|
||||
It's very nice that v6 mode avoids this problem entirely!
|
||||
"""]]
|
Loading…
Add table
Reference in a new issue