From 2a727e8c5f8d003af7102ea7de22e45a5faec421 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 11 Jul 2014 16:45:18 -0400 Subject: resolvemerge: New plumbing command that runs the automatic merge conflict resolver. --- Command/ResolveMerge.hs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Command/ResolveMerge.hs (limited to 'Command/ResolveMerge.hs') diff --git a/Command/ResolveMerge.hs b/Command/ResolveMerge.hs new file mode 100644 index 000000000..b1091e981 --- /dev/null +++ b/Command/ResolveMerge.hs @@ -0,0 +1,38 @@ +{- git-annex command + - + - Copyright 2014 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Command.ResolveMerge where + +import Common.Annex +import Command +import qualified Git +import Git.Sha +import qualified Git.Branch +import Annex.AutoMerge + +def :: [Command] +def = [command "resolvemerge" paramNothing seek SectionPlumbing + "resolve merge conflicts"] + +seek :: CommandSeek +seek ps = withNothing start ps + +start :: CommandStart +start = do + showStart "resolvemerge" "" + us <- fromMaybe nobranch <$> inRepo Git.Branch.current + d <- fromRepo Git.localGitDir + let merge_head = d "MERGE_HEAD" + them <- fromMaybe (error nomergehead) . extractSha + <$> liftIO (readFile merge_head) + ifM (resolveMerge (Just us) them) + ( next $ next $ return True + , error "Merge conflict could not be automatically resolved." + ) + where + nobranch = error "No branch is currently checked out." + nomergehead = error "No SHA found in .git/merge_head" -- cgit v1.2.3