diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-09 12:18:41 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-09 12:18:41 -0400 |
commit | 5aca7af2f702aa508ec5949e1fddbee429a93db5 (patch) | |
tree | f941ab8fc820ced727c3e5a024d1e0ec0cfcb559 /Assistant/Threads | |
parent | a7d8c4101c4cc476323ce0fca372b01198167773 (diff) |
assistant: Now honors preferred content settings when deciding what to transfer.
Both when queueing downloads, and uploads, consults the preferred content
settings.
I didn't make it check yet when requeing failed transfers or queuing
deferred downloads; dealing with the preferred content settings (or indeed,
other settings) changing while the assistant is running still needs work.
Diffstat (limited to 'Assistant/Threads')
-rw-r--r-- | Assistant/Threads/Committer.hs | 2 | ||||
-rw-r--r-- | Assistant/Threads/TransferScanner.hs | 15 |
2 files changed, 10 insertions, 7 deletions
diff --git a/Assistant/Threads/Committer.hs b/Assistant/Threads/Committer.hs index 6b036d09a..b791dcc82 100644 --- a/Assistant/Threads/Committer.hs +++ b/Assistant/Threads/Committer.hs @@ -210,7 +210,7 @@ handleAdds delayadd st changechan transferqueue dstatus cs = returnWhen (null in sha <- inRepo $ Git.HashObject.hashObject BlobObject link stageSymlink file sha - queueTransfers Next transferqueue dstatus key (Just file) Upload + queueTransfers Next transferqueue dstatus st key (Just file) Upload showEndOk return $ Just change diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs index cb02ed2f2..85275374d 100644 --- a/Assistant/Threads/TransferScanner.hs +++ b/Assistant/Threads/TransferScanner.hs @@ -22,6 +22,7 @@ import Utility.ThreadScheduler import qualified Git.LsFiles as LsFiles import Command import Annex.Content +import Annex.Wanted import qualified Data.Set as S @@ -105,18 +106,20 @@ expensiveScan st dstatus transferqueue rs = unless onlyweb $ do in if null rs' then rs else rs' go [] = noop go (f:fs) = do - mapM_ (enqueue f) =<< catMaybes <$> runThreadState st - (ifAnnexed f findtransfers $ return []) + mapM_ (enqueue f) =<< runThreadState st + (ifAnnexed f (findtransfers f) $ return []) go fs enqueue f (r, t) = do debug thisThread ["queuing", show t] queueTransferWhenSmall transferqueue dstatus (Just f) t r - findtransfers (key, _) = do + findtransfers f (key, _) = do locs <- loggedLocations key - let use a = return $ map (a key locs) rs + let use a = return $ catMaybes $ map (a key locs) rs ifM (inAnnex key) - ( use $ check Upload False - , use $ check Download True + ( filterM (wantSend (Just f) . Remote.uuid . fst) + =<< use (check Upload False) + , ifM (wantGet $ Just f) + ( use (check Download True) , return [] ) ) check direction want key locs r | direction == Upload && Remote.readonly r = Nothing |