diff options
author | Joey Hess <joeyh@joeyh.name> | 2018-01-09 15:36:56 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2018-01-09 16:22:07 -0400 |
commit | aff377f1fd40d1d5dbfc44e9a3ca37e646c1dcd4 (patch) | |
tree | ca6311b6565f217b1b037c7096d82c791cf010b9 /RemoteDaemon | |
parent | 008fe331573e259960c268e4bd30eb0c851dafb7 (diff) |
Improve startup time for commands that do not operate on remotes
And for tab completion, by not unnessessarily statting paths to remotes,
which used to cause eg, spin-up of removable drives.
Got rid of the remotes member of Git.Repo. This was a bit painful.
Remote.Git modifies the list of remotes as it reads their configs,
so still need a persistent list of remotes. So, put it in as
Annex.gitremotes. It's only populated by getGitRemotes, so commands
like examinekey that don't care about remotes won't do so.
This commit was sponsored by Jake Vosloo on Patreon.
Diffstat (limited to 'RemoteDaemon')
-rw-r--r-- | RemoteDaemon/Core.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/RemoteDaemon/Core.hs b/RemoteDaemon/Core.hs index 399b1553a..b3cd34a12 100644 --- a/RemoteDaemon/Core.hs +++ b/RemoteDaemon/Core.hs @@ -17,6 +17,7 @@ import RemoteDaemon.Transport import qualified Git import qualified Git.Types as Git import qualified Git.CurrentRepo +import qualified Git.Construct import Utility.SimpleProtocol import Utility.ThreadScheduler import Config @@ -137,8 +138,9 @@ 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 (LocalRepo g) _) ochan = - M.fromList . catMaybes <$> mapM gen (Git.remotes g) +genRemoteMap h@(TransportHandle (LocalRepo g) _) ochan = do + rs <- Git.Construct.fromRemotes g + M.fromList . catMaybes <$> mapM gen rs where gen r = do gc <- atomically $ extractRemoteGitConfig g (Git.repoDescribe r) |