summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-05-18 18:30:50 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-05-18 18:32:19 -0400
commita1885bd11607d8668d70f81eaafa25e5341e8e8c (patch)
treeec568215f94c0c824c5a58f82fd0a7506987abb9
parenteb6cb1b87f2d7016ddd4386e2a3bb20d8ea3c036 (diff)
make GIT_DIR, GIT_WORK_TREE absolute
GIT_DIR is set to something relative, like ".git" in the pre-commit hook. But internally all the directories are assumed to be absolute.
-rw-r--r--Git/CurrentRepo.hs10
-rw-r--r--test.hs1
2 files changed, 6 insertions, 5 deletions
diff --git a/Git/CurrentRepo.hs b/Git/CurrentRepo.hs
index 4325f452c..746904caf 100644
--- a/Git/CurrentRepo.hs
+++ b/Git/CurrentRepo.hs
@@ -29,20 +29,22 @@ import qualified Git.Config
-}
get :: IO Repo
get = do
- gd <- takeenv "GIT_DIR"
+ gd <- pathenv "GIT_DIR"
r <- configure gd =<< maybe fromCwd fromPath gd
- wt <- maybe (worktree $ location r) Just <$> takeenv "GIT_WORK_TREE"
+ wt <- maybe (worktree $ location r) Just <$> pathenv "GIT_WORK_TREE"
case wt of
Nothing -> return r
Just d -> do
changeWorkingDirectory d
return $ addworktree wt r
where
- takeenv s = do
+ pathenv s = do
v <- getEnv s
when (isJust v) $
unsetEnv s
- return v
+ case v of
+ Nothing -> return Nothing
+ Just d -> Just <$> absPath d
configure Nothing r = Git.Config.read r
configure (Just d) r = do
r' <- Git.Config.read r
diff --git a/test.hs b/test.hs
index c52a88d66..9a0fce873 100644
--- a/test.hs
+++ b/test.hs
@@ -25,7 +25,6 @@ import qualified Utility.SafeCommand
import qualified Annex
import qualified Annex.UUID
import qualified Backend
-import qualified Git.Config
import qualified Git.CurrentRepo
import qualified Git.Filename
import qualified Locations