analysis
This commit is contained in:
parent
cedbf88c82
commit
ce1c47b658
1 changed files with 29 additions and 0 deletions
|
@ -0,0 +1,29 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 4"""
|
||||
date="2025-07-11T17:41:03Z"
|
||||
content="""
|
||||
Apparently in the FAT case `gitAnnexLocation` is returning something like
|
||||
`../demo/.git/worktrees/demo-wt3/annex/objects/d13/2dd/SHA256E-s30--dcf81122854db210a12a47851a3430b6ab000e3f981b5266f0873b94d130c999/SHA256E-s30--dcf81122854db210a12a47851a3430b6ab000e3f981b5266f0873b94d130c999`
|
||||
which is not the right path to the object file. Should be
|
||||
`../demo/.git/annex/objects/d13/2dd/SHA256E-s30--dcf81122854db210a12a47851a3430b6ab000e3f981b5266f0873b94d130c999/SHA256E-s30--dcf81122854db210a12a47851a3430b6ab000e3f981b5266f0873b94d130c999`
|
||||
|
||||
(In the ext4 case that does not happen, instead the reconcileStaged `git diff`
|
||||
does not include the new file. So that is a different problem.)
|
||||
|
||||
It seems that `.git/worktrees/foo/annex` is a symlink when the filesystem
|
||||
supports symlinks. But, when symlinks are not supported, that symlink is
|
||||
not made. And so it looks for objects there, but they're not there.
|
||||
This could also cause other behavior differences, since other state files
|
||||
that go in the annex directory get written there, so git-annex inside
|
||||
and outside the worktree, or in different worktrees, can have different states.
|
||||
|
||||
That symlink is needed to make annex symlinks point to the object files.
|
||||
But git-annex shouldn't rely on the symlink in things like
|
||||
`gitAnnexLocation`.
|
||||
|
||||
Luckily, `annexDir` exists, and I've checked and it is the *only* thing
|
||||
that produces "annex" as a path to the annex directory. So `annexDir` will
|
||||
need to be made into a function that is passed the git repository and
|
||||
handles this special case.
|
||||
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue