export: When a submodule is in the tree to be exported, skip it.

This commit is contained in:
Joey Hess 2021-03-12 12:19:31 -04:00
parent ca25e94790
commit f2a425bd92
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 31 additions and 1 deletions

View file

@ -1,3 +1,9 @@
git-annex (8.20210311) UNRELEASED; urgency=medium
* export: When a submodule is in the tree to be exported, skip it.
-- Joey Hess <id@joeyh.name> Fri, 12 Mar 2021 12:06:37 -0400
git-annex (8.20210310) upstream; urgency=medium
* When non-annexed files in a tree are exported to a special remote,

View file

@ -241,7 +241,9 @@ fillExport r db (PreferredFiltered newtree) mtbcommitsha = do
(l, cleanup) <- inRepo $ Git.LsTree.lsTree Git.LsTree.LsTreeRecursive newtree
cvar <- liftIO $ newMVar (FileUploaded False)
allfilledvar <- liftIO $ newMVar (AllFilled True)
commandActions $ map (startExport r db cvar allfilledvar) l
commandActions $
map (startExport r db cvar allfilledvar)
(filter shouldexport l)
void $ liftIO $ cleanup
waitForAllRunningCommandActions
@ -253,6 +255,14 @@ fillExport r db (PreferredFiltered newtree) mtbcommitsha = do
>>= setRemoteTrackingBranch tb
liftIO $ fromFileUploaded <$> takeMVar cvar
where
shouldexport ti = case readObjectType (Git.LsTree.typeobj ti) of
Just BlobObject -> True
Just CommitObject -> False
-- ^ submodule is not exported
Just TreeObject -> False
-- ^ should never happen, lstree is recursing into subtrees
Nothing -> False
startExport :: Remote -> ExportHandle -> MVar FileUploaded -> MVar AllFilled -> Git.LsTree.TreeItem -> CommandStart
startExport r db cvar allfilledvar ti = do

View file

@ -0,0 +1,14 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2021-03-12T16:16:44Z"
content="""
Easy enough to exclude them from export, that's done.
But the other side of the coin is, importing back from there will generate
a remote-tracking branch without the submodule, and merging it will result
in a tree that does not include the submodule, as if it were deleted.
So, importing needs to somehow add back submodules,
unless the submodule location has been overwritten with a file on the remote.
"""]]