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.
This commit is contained in:
parent
d0fe4d7308
commit
2b66492d6e
22 changed files with 148 additions and 70 deletions
|
@ -60,7 +60,6 @@ import Logs.Transitions
|
|||
import Logs.File
|
||||
import Logs.Trust.Pure
|
||||
import Logs.Difference.Pure
|
||||
import Annex.ReplaceFile
|
||||
import qualified Annex.Queue
|
||||
import Annex.Branch.Transitions
|
||||
import qualified Annex
|
||||
|
|
|
@ -32,7 +32,6 @@ module Annex.Content.Direct (
|
|||
import Annex.Common
|
||||
import Annex.Perms
|
||||
import qualified Git
|
||||
import Utility.Tmp
|
||||
import Logs.Location
|
||||
import Logs.File
|
||||
import Utility.InodeCache
|
||||
|
|
|
@ -10,7 +10,6 @@ module Annex.Fixup where
|
|||
import Git.Types
|
||||
import Git.Config
|
||||
import Types.GitConfig
|
||||
import qualified Git.Construct as Construct
|
||||
import qualified Git.BuildVersion
|
||||
import Utility.Path
|
||||
import Utility.SafeCommand
|
||||
|
@ -30,7 +29,7 @@ fixupRepo r c = do
|
|||
let r' = disableWildcardExpansion r
|
||||
r'' <- fixupSubmodule r' c
|
||||
if annexDirect c
|
||||
then fixupDirect r''
|
||||
then return (fixupDirect r'')
|
||||
else return r''
|
||||
|
||||
{- Disable git's built-in wildcard expansion, which is not wanted
|
||||
|
@ -44,19 +43,16 @@ disableWildcardExpansion r
|
|||
{- Direct mode repos have core.bare=true, but are not really bare.
|
||||
- Fix up the Repo to be a non-bare repo, and arrange for git commands
|
||||
- run by git-annex to be passed parameters that override this setting. -}
|
||||
fixupDirect :: Repo -> IO Repo
|
||||
fixupDirect :: Repo -> Repo
|
||||
fixupDirect r@(Repo { location = l@(Local { gitdir = d, worktree = Nothing }) }) = do
|
||||
let r' = r
|
||||
r
|
||||
{ location = l { worktree = Just (parentDir d) }
|
||||
, gitGlobalOpts = gitGlobalOpts r ++
|
||||
[ Param "-c"
|
||||
, Param $ coreBare ++ "=" ++ boolConfig False
|
||||
]
|
||||
}
|
||||
-- Recalc now that the worktree is correct.
|
||||
rs' <- Construct.fromRemotes r'
|
||||
return $ r' { remotes = rs' }
|
||||
fixupDirect r = return r
|
||||
fixupDirect r = r
|
||||
|
||||
{- Submodules have their gitdir containing ".git/modules/", and
|
||||
- have core.worktree set, and also have a .git file in the top
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue