sync: Fix bug in adjusted branch merging that could cause recently added files to be lost when updating the adjusted branch.
The modification flag was not being set when making modifications deep in a tree, so parent trees were not updated to contain the modified tree. Seems to have exposed another bug where the wrong filename gets grafted in. This commit was sponsored by Brock Spratlen on Patreon.
This commit is contained in:
parent
d2527c421c
commit
b82c3e0783
3 changed files with 25 additions and 2 deletions
|
@ -184,10 +184,11 @@ adjustTree adjusttreeitem addtreeitems removefiles r repo =
|
|||
Just TreeObject -> do
|
||||
(sl, modified, is') <- go h False [] (beneathSubTree i) is
|
||||
sl' <- adjustlist h (inTree i) (beneathSubTree i) sl
|
||||
subtree <- if modified || sl' /= sl
|
||||
let slmodified = sl' /= sl
|
||||
subtree <- if modified || slmodified
|
||||
then liftIO $ recordSubTree h $ NewSubTree (LsTree.file i) sl'
|
||||
else return $ RecordedSubTree (LsTree.file i) (LsTree.sha i) []
|
||||
let !modified' = modified || wasmodified
|
||||
let !modified' = modified || slmodified || wasmodified
|
||||
go h modified' (subtree : c) intree is'
|
||||
_ -> error ("unexpected object type \"" ++ LsTree.typeobj i ++ "\"")
|
||||
| otherwise = return (c, wasmodified, i:is)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue