Use haskell setenv library to clean up several ugly workarounds for inability to manipulate the environment on windows.

Didn't know that this library existed!

This includes making git-annex not re-exec itself on start on windows, and
making the test suite on Windows run tests without forking.
This commit is contained in:
Joey Hess 2014-10-15 20:33:52 -04:00
parent 65280d91e7
commit 1e59df083d
12 changed files with 40 additions and 79 deletions

View file

@ -5,17 +5,13 @@
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Git.CurrentRepo where
import Common
import Git.Types
import Git.Construct
import qualified Git.Config
#ifndef mingw32_HOST_OS
import Utility.Env
#endif
{- Gets the current git repository.
-
@ -42,17 +38,13 @@ get = do
setCurrentDirectory d
return $ addworktree wt r
where
#ifndef mingw32_HOST_OS
pathenv s = do
v <- getEnv s
case v of
Just d -> do
void $ unsetEnv s
unsetEnv s
Just <$> absPath d
Nothing -> return Nothing
#else
pathenv _ = return Nothing
#endif
configure Nothing (Just r) = Git.Config.read r
configure (Just d) _ = do

View file

@ -21,8 +21,8 @@ import Utility.Env
override :: FilePath -> IO (IO ())
override index = do
res <- getEnv var
void $ setEnv var index True
return $ void $ reset res
setEnv var index True
return $ reset res
where
var = "GIT_INDEX_FILE"
reset (Just v) = setEnv var v True