diff options
-rw-r--r-- | Git/CatFile.hs | 2 | ||||
-rw-r--r-- | Git/CheckAttr.hs | 2 | ||||
-rw-r--r-- | Git/Command.hs | 5 | ||||
-rw-r--r-- | Git/HashObject.hs | 2 | ||||
-rw-r--r-- | Utility/CoProcess.hs | 6 | ||||
-rw-r--r-- | Utility/Process.hs | 1 |
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 |