summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Git/CatFile.hs2
-rw-r--r--Git/CheckAttr.hs2
-rw-r--r--Git/Command.hs5
-rw-r--r--Git/HashObject.hs2
-rw-r--r--Utility/CoProcess.hs6
-rw-r--r--Utility/Process.hs1
6 files changed, 12 insertions, 6 deletions
diff --git a/Git/CatFile.hs b/Git/CatFile.hs
index 1481bb462..2bd50592c 100644
--- a/Git/CatFile.hs
+++ b/Git/CatFile.hs
@@ -29,7 +29,7 @@ import qualified Utility.CoProcess as CoProcess
type CatFileHandle = CoProcess.CoProcessHandle
catFileStart :: Repo -> IO CatFileHandle
-catFileStart = CoProcess.start "git" . toCommand . gitCommandLine
+catFileStart = gitCoProcessStart
[ Param "cat-file"
, Param "--batch"
]
diff --git a/Git/CheckAttr.hs b/Git/CheckAttr.hs
index 6b321f8b8..13a7287b1 100644
--- a/Git/CheckAttr.hs
+++ b/Git/CheckAttr.hs
@@ -22,7 +22,7 @@ type Attr = String
checkAttrStart :: [Attr] -> Repo -> IO CheckAttrHandle
checkAttrStart attrs repo = do
cwd <- getCurrentDirectory
- h <- CoProcess.start "git" $ toCommand $ gitCommandLine params repo
+ h <- gitCoProcessStart params repo
return (h, attrs, cwd)
where
params =
diff --git a/Git/Command.hs b/Git/Command.hs
index 04b0723d0..431569559 100644
--- a/Git/Command.hs
+++ b/Git/Command.hs
@@ -13,6 +13,7 @@ import System.Process
import Common
import Git
import Git.Types
+import qualified Utility.CoProcess as CoProcess
{- Constructs a git command line operating on the specified repo. -}
gitCommandLine :: [CommandParam] -> Repo -> [CommandParam]
@@ -80,3 +81,7 @@ reap = do
-- throws an exception when there are no child processes
catchDefaultIO (getAnyProcessStatus False True) Nothing
>>= maybe noop (const reap)
+
+{- Runs a git command as a coprocess. -}
+gitCoProcessStart :: [CommandParam] -> Repo -> IO CoProcess.CoProcessHandle
+gitCoProcessStart params repo = CoProcess.start "git" (toCommand $ gitCommandLine params repo) (gitEnv repo)
diff --git a/Git/HashObject.hs b/Git/HashObject.hs
index c90c9ec3d..7d6b5cc19 100644
--- a/Git/HashObject.hs
+++ b/Git/HashObject.hs
@@ -17,7 +17,7 @@ import qualified Utility.CoProcess as CoProcess
type HashObjectHandle = CoProcess.CoProcessHandle
hashObjectStart :: Repo -> IO HashObjectHandle
-hashObjectStart = CoProcess.start "git" . toCommand . gitCommandLine
+hashObjectStart = gitCoProcessStart
[ Param "hash-object"
, Param "-w"
, Param "--stdin-paths"
diff --git a/Utility/CoProcess.hs b/Utility/CoProcess.hs
index 67f861bb3..7a2a5fe8e 100644
--- a/Utility/CoProcess.hs
+++ b/Utility/CoProcess.hs
@@ -17,9 +17,9 @@ import Common
type CoProcessHandle = (ProcessHandle, Handle, Handle, CreateProcess)
-start :: FilePath -> [String] -> IO CoProcessHandle
-start command params = do
- (from, to, _err, pid) <- runInteractiveProcess command params Nothing Nothing
+start :: FilePath -> [String] -> Maybe [(String, String)] -> IO CoProcessHandle
+start command params env = do
+ (from, to, _err, pid) <- runInteractiveProcess command params Nothing env
return (pid, to, from, proc command params)
stop :: CoProcessHandle -> IO ()
diff --git a/Utility/Process.hs b/Utility/Process.hs
index e5de96ae9..1c99b83ca 100644
--- a/Utility/Process.hs
+++ b/Utility/Process.hs
@@ -233,5 +233,6 @@ runInteractiveProcess f args c e = do
{ std_in = CreatePipe
, std_out = CreatePipe
, std_err = CreatePipe
+ , env = e
}
System.Process.runInteractiveProcess f args c e