diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-11 12:58:03 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-11 12:58:24 -0400 |
commit | 2b0dc0a1009b92a1c236598049b0efa623f9c25d (patch) | |
tree | c98e9871f6b93c7370784c8ecd0b48cf687a7d9f /Annex/Branch.hs | |
parent | ee6d02f8dbcd962db1666c06f701d3b0835b1ada (diff) |
Avoid unsetting HOME when running certian git commands. Closes: #690193
Setting GIT_INDEX_FILE clobbers the rest of the environment, making git
not read ~/.gitconfig, and blow up if GECOS didn't have a name for the
user.
I'm not entirely happy with getEnvironment being run every time now,
that's somewhat expensive. It may make sense to just set GIT_COMMITTER_*
and GIT_AUTHOR_*, but I worry that clobbering the rest could break PATH,
or GIT_PATH, or something else that might be used by a command run in here.
And caching the environment is not a good idea either; it can change..
Diffstat (limited to 'Annex/Branch.hs')
-rw-r--r-- | Annex/Branch.hs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs index b1a807f24..3b056eed5 100644 --- a/Annex/Branch.hs +++ b/Annex/Branch.hs @@ -22,6 +22,7 @@ module Annex.Branch ( ) where import qualified Data.ByteString.Lazy.Char8 as L +import System.Environment import Common.Annex import Annex.BranchState @@ -292,7 +293,8 @@ withIndex' :: Bool -> Annex a -> Annex a withIndex' bootstrapping a = do f <- fromRepo gitAnnexIndex g <- gitRepo - let g' = g { gitEnv = Just [("GIT_INDEX_FILE", f)] } + e <- liftIO getEnvironment + let g' = g { gitEnv = Just $ ("GIT_INDEX_FILE", f):e } Annex.changeState $ \s -> s { Annex.repo = g' } checkIndexOnce $ unlessM (liftIO $ doesFileExist f) $ do |