diff options
author | Joey Hess <joey@kitenet.net> | 2011-12-13 15:08:44 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-12-13 15:08:44 -0400 |
commit | 25b2cc4148e4cc8f7435cdbcf4b124cc317c1305 (patch) | |
tree | 51f22dc7c65bb38574c4682ec16ca7a552d96cf6 /Git | |
parent | 13fff71f2019ae098c3f8532ac2734cb1ab11498 (diff) |
move commit to Git.Branch
Diffstat (limited to 'Git')
-rw-r--r-- | Git/Branch.hs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Git/Branch.hs b/Git/Branch.hs index e69e96f28..8b0d1e5af 100644 --- a/Git/Branch.hs +++ b/Git/Branch.hs @@ -58,3 +58,20 @@ fastForward branch (first:rest) repo = do (True, False) -> findbest r rs -- better (False, True) -> findbest c rs -- worse (False, False) -> findbest c rs -- same + +{- Commits the index into the specified branch (or other ref), + - with the specified parent refs, and returns the committed sha -} +commit :: String -> Branch -> [Ref] -> Repo -> IO Sha +commit message branch parentrefs repo = do + tree <- getSha "write-tree" $ asString $ + pipeRead [Param "write-tree"] repo + sha <- getSha "commit-tree" $ asString $ + ignorehandle $ pipeWriteRead + (map Param $ ["commit-tree", show tree] ++ ps) + (L.pack message) repo + run "update-ref" [Param $ show branch, Param $ show sha] repo + return sha + where + ignorehandle a = snd <$> a + asString a = L.unpack <$> a + ps = concatMap (\r -> ["-p", show r]) parentrefs |