diff options
author | 2011-06-21 19:09:20 -0400 | |
---|---|---|
committer | 2011-06-21 19:09:20 -0400 | |
commit | 5d20ac5800f6577fb40ebfa7c8d68df43757a3e1 (patch) | |
tree | fc62a89be0fb294b8b05f9653f7e18cfc2a9939b /GitUnionMerge.hs | |
parent | 40ec8a9726586f24357a5ae2057a092a971c1046 (diff) |
export the commit function and generalize
Diffstat (limited to 'GitUnionMerge.hs')
-rw-r--r-- | GitUnionMerge.hs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/GitUnionMerge.hs b/GitUnionMerge.hs index ba9ea79e4..bc12cbe27 100644 --- a/GitUnionMerge.hs +++ b/GitUnionMerge.hs @@ -6,7 +6,9 @@ -} module GitUnionMerge ( - unionMerge + merge, + stage, + commit ) where import System.Cmd.Utils @@ -23,10 +25,10 @@ import Utility - Use indexpopulated only if the index file already contains exactly the - contents of aref. -} -unionMerge :: Git.Repo -> String -> String -> String -> Bool -> IO () -unionMerge g aref bref newref indexpopulated = do +merge :: Git.Repo -> String -> String -> String -> Bool -> IO () +merge g aref bref newref indexpopulated = do stage g aref bref indexpopulated - commit g aref bref newref + commit g "union merge" newref [aref, bref] {- Stages the content of both refs into the index. -} stage :: Git.Repo -> String -> String -> Bool -> IO () @@ -68,14 +70,15 @@ stage g aref bref indexpopulated = do sha <- Git.hashObject g $ unionmerge content return $ Just $ ls_tree_line sha file -{- Commits the index into the specified branch, as a merge commit. -} -commit :: Git.Repo -> String -> String -> String -> IO () -commit g aref bref newref = do +{- Commits the index into the specified branch. If refs are specified, + - commits a merge. -} +commit :: Git.Repo -> String -> String -> [String] -> IO () +commit g message newref mergedrefs = do tree <- Git.getSha "write-tree" $ ignorehandle $ pipeFrom "git" ["write-tree"] sha <- Git.getSha "commit-tree" $ ignorehandle $ - pipeBoth "git" ["commit-tree", tree, "-p", aref, "-p", bref] - "union merge" + pipeBoth "git" (["commit-tree", tree] ++ ps) message Git.run g "update-ref" [Param newref, Param sha] where ignorehandle a = return . snd =<< a + ps = concatMap (\r -> ["-p", r]) mergedrefs |