implement importChanges optimisaton (not used yet)

For simplicity, I've not tried to make it handle History yet, so when
there is a history, a full import will still be done. Probably the right
way to handle history is to first diff from the current tree to the last
imported tree. Then, diff from the current tree to each of the
historical trees, and recurse through the history diffing from child tree
to parent tree.

I don't think that will need a record of the previously imported
historical trees, and so Logs.Import doesn't store them. Although I did
leave room for future expansion in that log just in case.

Next step will be to change importTree to importChanges and modify
recordImportTree et all to handle it, by using adjustTree.

Sponsored-by: Brett Eisenberg on Patreon
This commit is contained in:
Joey Hess 2023-05-31 15:45:23 -04:00
parent 7298123520
commit c6acf574c7
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
8 changed files with 169 additions and 26 deletions

View file

@ -587,12 +587,12 @@ pullThirdPartyPopulated o remote
Command.Import.listContents' remote ImportTree (CheckGitIgnore False) go
where
go (Just importable) = importKeys remote ImportTree False True importable >>= \case
Just importablekeys -> do
ImportFinished importablekeys -> do
(_imported, updatestate) <- recordImportTree remote ImportTree importablekeys
next $ do
updatestate
return True
Nothing -> next $ return False
ImportUnfinished -> next $ return False
go Nothing = next $ return True -- unchanged from before
ai = ActionItemOther (Just (UnquotedString (Remote.name remote)))