summaryrefslogtreecommitdiff
path: root/Remote/Git.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-01-14 15:36:33 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-01-14 15:36:33 -0400
commite6f32bd11c94221f82fe9acf6ecb74be2fab4a76 (patch)
treef52a5aa501875340c05f34c151fd027036cff83a /Remote/Git.hs
parent44b6bc589b6e2219cd3a4cf57fd2dd30068b2744 (diff)
Fix a long-standing bug that could cause the wrong index file to be used when committing to the git-annex branch, if GIT_INDEX_FILE is set in the environment. This typically resulted in git-annex branch log files being committed to the master branch and later showing up in the work tree. (These log files can be safely removed.)
Diffstat (limited to 'Remote/Git.hs')
-rw-r--r--Remote/Git.hs9
1 files changed, 5 insertions, 4 deletions
diff --git a/Remote/Git.hs b/Remote/Git.hs
index 900b60926..4c6b95f60 100644
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -54,6 +54,7 @@ import Control.Concurrent
import Control.Concurrent.MSampleVar
import System.Process (std_in, std_err)
import qualified Data.Map as M
+import qualified Data.AssocList as A
import Control.Exception.Extensible
remote :: RemoteType
@@ -414,13 +415,13 @@ fsckOnRemote r params
Just (c, ps) -> batchCommand c ps
| otherwise = return $ do
program <- readProgramFile
- env <- getEnvironment
r' <- Git.Config.read r
- let env' =
+ env <- getEnvironment
+ let env' = A.addEntries
[ ("GIT_WORK_TREE", Git.repoPath r')
, ("GIT_DIR", Git.localGitDir r')
- ] ++ env
- batchCommandEnv program (Param "fsck" : params) (Just env')
+ ] env
+ batchCommandEnv program (Param "fsck" : params) $ Just env'
{- The passed repair action is run in the Annex monad of the remote. -}
repairRemote :: Git.Repo -> Annex Bool -> Annex (IO Bool)