sync: Fix crash when there are submodules and an adjusted branch is checked out
Reverse adjusting the branch uses treeItemToTreeContent, which was missed when adding submodule support earlier.
This commit is contained in:
parent
70b306ec34
commit
bbdeb1a1a8
3 changed files with 9 additions and 3 deletions
|
@ -3,6 +3,8 @@ git-annex (7.20191018) UNRELEASED; urgency=medium
|
||||||
* init: Fix a failure when used in a submodule on a crippled filesystem.
|
* init: Fix a failure when used in a submodule on a crippled filesystem.
|
||||||
* enable-tor: Deal with pkexec changing to root's home directory
|
* enable-tor: Deal with pkexec changing to root's home directory
|
||||||
when running a command.
|
when running a command.
|
||||||
|
* sync: Fix crash when there are submodules and an adjusted branch is
|
||||||
|
checked out.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Mon, 21 Oct 2019 11:01:06 -0400
|
-- Joey Hess <id@joeyh.name> Mon, 21 Oct 2019 11:01:06 -0400
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ mkTree :: MkTreeHandle -> [TreeContent] -> IO Sha
|
||||||
mkTree (MkTreeHandle cp) l = CoProcess.query cp send receive
|
mkTree (MkTreeHandle cp) l = CoProcess.query cp send receive
|
||||||
where
|
where
|
||||||
send h = do
|
send h = do
|
||||||
forM_ l $ \i -> hPutStr h $ case i of
|
forM_ l $ \i -> hPutStr h $ case i of
|
||||||
TreeBlob f fm s -> mkTreeOutput fm BlobObject s f
|
TreeBlob f fm s -> mkTreeOutput fm BlobObject s f
|
||||||
RecordedSubTree f s _ -> mkTreeOutput treeMode TreeObject s f
|
RecordedSubTree f s _ -> mkTreeOutput treeMode TreeObject s f
|
||||||
NewSubTree _ _ -> error "recordSubTree internal error; unexpected NewSubTree"
|
NewSubTree _ _ -> error "recordSubTree internal error; unexpected NewSubTree"
|
||||||
|
@ -127,7 +127,9 @@ data TreeItem = TreeItem TopFilePath FileMode Sha
|
||||||
deriving (Show, Eq)
|
deriving (Show, Eq)
|
||||||
|
|
||||||
treeItemToTreeContent :: TreeItem -> TreeContent
|
treeItemToTreeContent :: TreeItem -> TreeContent
|
||||||
treeItemToTreeContent (TreeItem f m s) = TreeBlob f m s
|
treeItemToTreeContent (TreeItem f m s) = case toTreeItemType m of
|
||||||
|
Just TreeSubmodule -> TreeCommit f m s
|
||||||
|
_ -> TreeBlob f m s
|
||||||
|
|
||||||
treeItemToLsTreeItem :: TreeItem -> LsTree.TreeItem
|
treeItemToLsTreeItem :: TreeItem -> LsTree.TreeItem
|
||||||
treeItemToLsTreeItem (TreeItem f mode sha) = LsTree.TreeItem
|
treeItemToLsTreeItem (TreeItem f mode sha) = LsTree.TreeItem
|
||||||
|
@ -235,7 +237,7 @@ adjustTree adjusttreeitem addtreeitems resolveaddconflict removefiles r repo =
|
||||||
let !modified' = modified || slmodified || wasmodified
|
let !modified' = modified || slmodified || wasmodified
|
||||||
go h modified' (subtree : c) depth intree is'
|
go h modified' (subtree : c) depth intree is'
|
||||||
Just CommitObject -> do
|
Just CommitObject -> do
|
||||||
let ti = TreeCommit (LsTree.file i) (LsTree.mode i) (LsTree.sha i)
|
let ti = TreeCommit (LsTree.file i) (LsTree.mode i) (LsTree.sha i)
|
||||||
go h wasmodified (ti:c) depth intree is
|
go h wasmodified (ti:c) depth intree is
|
||||||
_ -> error ("unexpected object type \"" ++ LsTree.typeobj i ++ "\"")
|
_ -> error ("unexpected object type \"" ++ LsTree.typeobj i ++ "\"")
|
||||||
| otherwise = return (c, wasmodified, i:is)
|
| otherwise = return (c, wasmodified, i:is)
|
||||||
|
|
|
@ -51,3 +51,5 @@ upgrade supported from repository
|
||||||
[[ben]]
|
[[ben]]
|
||||||
|
|
||||||
[[!tag confirmed]]
|
[[!tag confirmed]]
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue