Avoid grafting in export tree objects that are missing
They could be missing due to an interrupted git-annex at just the wrong time during a prior graft, after which the tree objects got garbage collected. Or they could be missing because of manual messing with the git-annex branch, eg resetting it to back before the graft commit. Sponsored-by: Dartmouth College's OpenNeuro project
This commit is contained in:
parent
b32c4c2e98
commit
25a6ab6f11
3 changed files with 24 additions and 3 deletions
|
@ -890,8 +890,12 @@ performTransitionsLocked jl ts neednewlocalbranch transitionedrefs = do
|
||||||
where
|
where
|
||||||
regraft [] c = pure c
|
regraft [] c = pure c
|
||||||
regraft (et:ets) c =
|
regraft (et:ets) c =
|
||||||
|
-- Verify that the tree object exists.
|
||||||
|
catObjectDetails et >>= \case
|
||||||
|
Just _ ->
|
||||||
prepRememberTreeish et graftpoint c
|
prepRememberTreeish et graftpoint c
|
||||||
>>= regraft ets
|
>>= regraft ets
|
||||||
|
Nothing -> regraft ets c
|
||||||
graftpoint = asTopFilePath exportTreeGraftPoint
|
graftpoint = asTopFilePath exportTreeGraftPoint
|
||||||
|
|
||||||
checkBranchDifferences :: Git.Ref -> Annex ()
|
checkBranchDifferences :: Git.Ref -> Annex ()
|
||||||
|
|
|
@ -53,3 +53,4 @@ there are good and there are some bad days ;)
|
||||||
[[!meta author=yoh]]
|
[[!meta author=yoh]]
|
||||||
[[!tag projects/openneuro]]
|
[[!tag projects/openneuro]]
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 9"""
|
||||||
|
date="2024-06-07T20:25:27Z"
|
||||||
|
content="""
|
||||||
|
Note that at least in the case of ds002144, its git-annex branch does not
|
||||||
|
contain grafts of the missing trees. The grafts only get created in the
|
||||||
|
clone when dealing with a transition.
|
||||||
|
|
||||||
|
So, it seems that to recover from the problem, at least in the case of this
|
||||||
|
repository, it will be sufficient for git-annex to avoid regrafting trees
|
||||||
|
if the object is missing.
|
||||||
|
|
||||||
|
Done that, and so I suppose this bug can be closed. I'd be more satified if
|
||||||
|
I knew how this repository was produced though.
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue