From 0e45b762a07d12dbc099936a8481bda9c02d0318 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 12 Dec 2011 21:24:55 -0400 Subject: broke out Git/HashObject.hs --- Git/HashObject.hs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Git/HashObject.hs (limited to 'Git') diff --git a/Git/HashObject.hs b/Git/HashObject.hs new file mode 100644 index 000000000..f28d865b1 --- /dev/null +++ b/Git/HashObject.hs @@ -0,0 +1,29 @@ +{- git hash-object interface + - + - Copyright 2011 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Git.HashObject where + +import Common +import Git + +{- Injects a set of files into git, returning the shas of the objects. -} +hashFiles :: [FilePath] -> Repo -> IO [Sha] +hashFiles paths repo = do + (pid, fromh, toh) <- hPipeBoth "git" $ toCommand $ git_hash_object repo + _ <- forkProcess (feeder toh) + hClose toh + shas <- map Git.Ref . lines <$> hGetContents fromh + hClose fromh + forceSuccess pid + return shas + where + git_hash_object = Git.gitCommandLine + [Param "hash-object", Param "-w", Param "--stdin-paths"] + feeder toh = do + hPutStr toh $ unlines paths + hClose toh + exitSuccess -- cgit v1.2.3