make LocalRepo a newtype
This commit is contained in:
parent
8452ea45ca
commit
67f50e9cdd
5 changed files with 8 additions and 8 deletions
|
@ -30,7 +30,7 @@ liftAnnex (TransportHandle _ annexstate) a = do
|
|||
return r
|
||||
|
||||
inLocalRepo :: TransportHandle -> (Git.Repo -> IO a) -> IO a
|
||||
inLocalRepo (TransportHandle g _) a = a g
|
||||
inLocalRepo (TransportHandle (LocalRepo g) _) a = a g
|
||||
|
||||
-- Check if any of the shas are actally new in the local git repo,
|
||||
-- to avoid unnecessary fetching.
|
||||
|
|
|
@ -111,7 +111,7 @@ runController ichan ochan = do
|
|||
-- Generates a map with a transport for each supported remote in the git repo,
|
||||
-- except those that have annex.sync = false
|
||||
genRemoteMap :: TransportHandle -> TChan Emitted -> IO RemoteMap
|
||||
genRemoteMap h@(TransportHandle g _) ochan =
|
||||
genRemoteMap h@(TransportHandle (LocalRepo g) _) ochan =
|
||||
M.fromList . catMaybes <$> mapM gen (Git.remotes g)
|
||||
where
|
||||
gen r = case Git.location r of
|
||||
|
@ -132,11 +132,11 @@ genTransportHandle :: IO TransportHandle
|
|||
genTransportHandle = do
|
||||
annexstate <- newMVar =<< Annex.new =<< Git.CurrentRepo.get
|
||||
g <- Annex.repo <$> readMVar annexstate
|
||||
return $ TransportHandle g annexstate
|
||||
return $ TransportHandle (LocalRepo g) annexstate
|
||||
|
||||
updateTransportHandle :: TransportHandle -> IO TransportHandle
|
||||
updateTransportHandle h@(TransportHandle _g annexstate) = do
|
||||
g' <- liftAnnex h $ do
|
||||
reloadConfig
|
||||
Annex.fromRepo id
|
||||
return (TransportHandle g' annexstate)
|
||||
return (TransportHandle (LocalRepo g') annexstate)
|
||||
|
|
|
@ -16,7 +16,7 @@ import Remote.Helper.Ssh
|
|||
import Remote.GCrypt (accessShellConfig)
|
||||
|
||||
transport :: Transport
|
||||
transport rr@(RemoteRepo r gc) url h@(TransportHandle g _) ichan ochan
|
||||
transport rr@(RemoteRepo r gc) url h@(TransportHandle (LocalRepo g) _) ichan ochan
|
||||
| accessShellConfig gc = do
|
||||
r' <- encryptedRemote g r
|
||||
v <- liftAnnex h $ git_annex_shell r' "notifychanges" [] []
|
||||
|
|
|
@ -29,10 +29,10 @@ transport rr@(RemoteRepo r _) url h ichan ochan = do
|
|||
Just (cmd, params) -> transportUsingCmd cmd params rr url h ichan ochan
|
||||
|
||||
transportUsingCmd :: FilePath -> [CommandParam] -> Transport
|
||||
transportUsingCmd cmd params rr@(RemoteRepo r gc) url h@(TransportHandle g s) ichan ochan = do
|
||||
transportUsingCmd cmd params rr@(RemoteRepo r gc) url h@(TransportHandle (LocalRepo g) s) ichan ochan = do
|
||||
-- enable ssh connection caching wherever inLocalRepo is called
|
||||
g' <- liftAnnex h $ sshOptionsTo r gc g
|
||||
let transporthandle = TransportHandle g' s
|
||||
let transporthandle = TransportHandle (LocalRepo g') s
|
||||
transportUsingCmd' cmd params rr url transporthandle ichan ochan
|
||||
|
||||
transportUsingCmd' :: FilePath -> [CommandParam] -> Transport
|
||||
|
|
|
@ -29,7 +29,7 @@ newtype RemoteURI = RemoteURI URI
|
|||
type Transport = RemoteRepo -> RemoteURI -> TransportHandle -> TChan Consumed -> TChan Emitted -> IO ()
|
||||
|
||||
data RemoteRepo = RemoteRepo Git.Repo RemoteGitConfig
|
||||
type LocalRepo = Git.Repo
|
||||
newtype LocalRepo = LocalRepo Git.Repo
|
||||
|
||||
-- All Transports share a single AnnexState MVar
|
||||
--
|
||||
|
|
Loading…
Reference in a new issue