aboutsummaryrefslogtreecommitdiff
path: root/Git/Config.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-05-19 10:51:22 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-05-19 11:08:50 -0400
commitebbd24e5ed6bbb41305d8105d7fac355dcf15bbc (patch)
treeb97c41c31ceab8ccf89ed1cf20d86915b4270283 /Git/Config.hs
parent9d9814477601217c8d39d75cc03e27ee4d734de3 (diff)
more worktree improvements
Avoid more expensive code path when no core.worktree is configured. Don't change worktree when reading config if one is already set. This could happen if GIT_CORE_WORKTREE is set, and the repo also has core.worktree, and the config is reread. Now GIT_CORE_WORKTREE will prevail.
Diffstat (limited to 'Git/Config.hs')
-rw-r--r--Git/Config.hs26
1 files changed, 14 insertions, 12 deletions
diff --git a/Git/Config.hs b/Git/Config.hs
index 38e1ca4be..dab1cdf5e 100644
--- a/Git/Config.hs
+++ b/Git/Config.hs
@@ -78,19 +78,15 @@ store s repo = do
- based on the core.bare and core.worktree settings.
-}
updateLocation :: Repo -> Repo
-updateLocation r = go $ location r
+updateLocation r@(Repo { location = LocalUnknown d })
+ | isBare r = newloc $ Local d Nothing
+ | otherwise = newloc $ Local (d </> ".git") (Just d)
where
- go (LocalUnknown d)
- | isbare = ret $ Local d Nothing
- | otherwise = ret $ Local (d </> ".git") (Just d)
- go l@(Local {}) = ret l
- go _ = r
- isbare = fromMaybe False $ isTrue =<< getMaybe "core.bare" r
- ret l = r { location = l' }
- where
- l' = maybe l (setworktree l) $
- getMaybe "core.worktree" r
- setworktree l t = l { worktree = Just t }
+ newloc l = r { location = getworktree l }
+ getworktree l = case workTree r of
+ Nothing -> l
+ wt -> l { worktree = wt }
+updateLocation r = r
{- Parses git config --list or git config --null --list output into a
- config map. -}
@@ -114,3 +110,9 @@ isTrue s
| otherwise = Nothing
where
s' = map toLower s
+
+isBare :: Repo -> Bool
+isBare r = fromMaybe False $ isTrue =<< getMaybe "core.bare" r
+
+workTree :: Repo -> Maybe FilePath
+workTree = getMaybe "core.worktree"