diff options
author | Joey Hess <joey@kitenet.net> | 2012-05-18 18:20:53 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-05-18 18:20:53 -0400 |
commit | eb6cb1b87f2d7016ddd4386e2a3bb20d8ea3c036 (patch) | |
tree | 1f9f35e7ca3db662bd67ec759de90267149319fa /Git/Construct.hs | |
parent | bb4f31a0ee496ffb83d31cc56f8827e47605d763 (diff) |
Add support for core.worktree, and fix support for GIT_WORK_TREE and GIT_DIR.
The environment needs to override git-config. Changed when git config is
read, and avoid rereading it once it's been read.
chdir for both worktree settings.
Diffstat (limited to 'Git/Construct.hs')
-rw-r--r-- | Git/Construct.hs | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/Git/Construct.hs b/Git/Construct.hs index 45ea0f64d..b809d7318 100644 --- a/Git/Construct.hs +++ b/Git/Construct.hs @@ -6,7 +6,6 @@ -} module Git.Construct ( - fromCurrent, fromCwd, fromAbsPath, fromPath, @@ -21,8 +20,6 @@ module Git.Construct ( ) where import System.Posix.User -import System.Posix.Env (getEnv, unsetEnv) -import System.Posix.Directory (changeWorkingDirectory) import qualified Data.Map as M hiding (map, split) import Network.URI @@ -31,28 +28,6 @@ import Git.Types import Git import qualified Git.Url as Url -{- Finds the current git repository. - - - - GIT_DIR can override the location of the .git directory. - - - - When GIT_WORK_TREE is set, chdir to it, so that anything using - - this repository runs in the right location. However, this chdir is - - done after determining GIT_DIR; git does not let GIT_WORK_TREE - - influence the git directory. - - - - Both environment variables are unset, to avoid confusing other git - - commands that also look at them. This would particularly be a problem - - when GIT_DIR is relative and we chdir for GIT_WORK_TREE. Instead, - - the Git module passes --work-tree and --git-dir to git commands it runs. - -} -fromCurrent :: IO Repo -fromCurrent = do - r <- maybe fromCwd fromPath =<< getEnv "GIT_DIR" - maybe noop changeWorkingDirectory =<< getEnv "GIT_WORK_TREE" - unsetEnv "GIT_DIR" - unsetEnv "GIT_WORK_TREE" - return r - {- Finds the git repository used for the Cwd, which may be in a parent - directory. -} fromCwd :: IO Repo @@ -251,3 +226,5 @@ newFrom l = return Repo , remotes = [] , remoteName = Nothing } + + |