atomic git-annex branch update when regrafting in transition
Fix a bug where interrupting git-annex while it is updating the git-annex branch could lead to git fsck complaining about missing tree objects. Interrupting git-annex while regraftexports is running in a transition that is forgetting git-annex branch history would leave the repository with a git-annex branch that did not contain the tree shas listed in export.log. That lets those trees be garbage collected. A subsequent run of the same transition then regrafts the trees listed in export.log into the git-annex branch. But those trees have been lost. Note that both sides of `if neednewlocalbranch` are atomic now. I had thought only the True side needed to be, but I do think there may be cases where the False side needs to be as well. Sponsored-by: Dartmouth College's OpenNeuro project
This commit is contained in:
parent
f5532be954
commit
b32c4c2e98
4 changed files with 78 additions and 27 deletions
|
@ -0,0 +1,15 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 8"""
|
||||
date="2024-06-07T17:59:43Z"
|
||||
content="""
|
||||
Fixed performTransitionsLocked to create the new git-annex branch
|
||||
atomically.
|
||||
|
||||
Found another way this could happen, interrupting `git-annex export` after
|
||||
it writes export.log but before it grafts the tree into the git-annex
|
||||
branch. Fixed that one too.
|
||||
|
||||
So hopefully this won't happen to any more repositories with these fixes.
|
||||
Still leaves the question of how to recover from the problem.
|
||||
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue