diff options
author | 2012-06-06 12:52:21 -0400 | |
---|---|---|
committer | 2012-06-06 12:52:21 -0400 | |
commit | 4b32ea793d4e747c3e6cff92041e35061a78c410 (patch) | |
tree | 32e316e5a6466bce986c25305944f881562f729c /Git/HashObject.hs | |
parent | 27cfeca4ea8f2aa326e7d8416401c319133491db (diff) | |
parent | 455fca65bfb9ca4270fa7f89986d09ee62188d43 (diff) |
Merge branch 'master' into watch
Diffstat (limited to 'Git/HashObject.hs')
-rw-r--r-- | Git/HashObject.hs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Git/HashObject.hs b/Git/HashObject.hs index 617e5ac28..b052413fd 100644 --- a/Git/HashObject.hs +++ b/Git/HashObject.hs @@ -9,7 +9,9 @@ module Git.HashObject where import Common import Git +import Git.Sha import Git.Command +import Git.Types import qualified Utility.CoProcess as CoProcess type HashObjectHandle = CoProcess.CoProcessHandle @@ -24,11 +26,23 @@ hashObjectStart = CoProcess.start "git" . toCommand . gitCommandLine hashObjectStop :: HashObjectHandle -> IO () hashObjectStop = CoProcess.stop -{- Injects a file into git, returning the shas of the objects. -} +{- Injects a file into git, returning the Sha of the object. -} hashFile :: HashObjectHandle -> FilePath -> IO Sha hashFile h file = CoProcess.query h send receive where send to = do fileEncoding to hPutStrLn to file - receive from = Ref <$> hGetLine from + receive from = getSha "hash-object" $ hGetLine from + +{- Injects some content into git, returning its Sha. -} +hashObject :: Repo -> ObjectType -> String -> IO Sha +hashObject repo objtype content = getSha subcmd $ do + (h, s) <- pipeWriteRead (map Param params) content repo + length s `seq` do + forceSuccess h + reap -- XXX unsure why this is needed + return s + where + subcmd = "hash-object" + params = [subcmd, "-t", show objtype, "-w", "--stdin"] |