diff options
Diffstat (limited to 'Annex')
-rw-r--r-- | Annex/AdjustedBranch.hs | 8 | ||||
-rw-r--r-- | Annex/AutoMerge.hs | 8 | ||||
-rw-r--r-- | Annex/Direct.hs | 17 |
3 files changed, 16 insertions, 17 deletions
diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs index 26a24d8e6..2b014a12a 100644 --- a/Annex/AdjustedBranch.hs +++ b/Annex/AdjustedBranch.hs @@ -260,8 +260,8 @@ adjustedBranchCommitMessage = "git-annex adjusted branch" {- Update the currently checked out adjusted branch, merging the provided - branch into it. Note that the provided branch should be a non-adjusted - branch. -} -updateAdjustedBranch :: Branch -> (OrigBranch, Adjustment) -> Git.Branch.CommitMode -> Annex Bool -updateAdjustedBranch tomerge (origbranch, adj) commitmode = catchBoolIO $ +updateAdjustedBranch :: Branch -> (OrigBranch, Adjustment) -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Annex Bool +updateAdjustedBranch tomerge (origbranch, adj) mergeconfig commitmode = catchBoolIO $ join $ preventCommits go where adjbranch@(AdjBranch currbranch) = originalToAdjusted origbranch adj @@ -304,7 +304,7 @@ updateAdjustedBranch tomerge (origbranch, adj) commitmode = catchBoolIO $ showAction $ "Merging into " ++ fromRef (Git.Ref.base origbranch) -- The --no-ff is important; it makes git -- merge not care that the work tree is empty. - merged <- inRepo (Git.Merge.mergeNonInteractive' [Param "--no-ff"] tomerge commitmode) + merged <- inRepo (Git.Merge.merge' [Param "--no-ff"] tomerge mergeconfig commitmode) <||> (resolveMerge (Just updatedorig) tomerge True <&&> commitResolvedMerge commitmode) if merged then do @@ -340,7 +340,7 @@ updateAdjustedBranch tomerge (origbranch, adj) commitmode = catchBoolIO $ -- this commit will be a fast-forward. adjmergecommitff <- commitAdjustedTree' adjtree (BasisBranch mergecommit) [currbranch] showAction "Merging into adjusted branch" - ifM (autoMergeFrom adjmergecommitff (Just currbranch) commitmode) + ifM (autoMergeFrom adjmergecommitff (Just currbranch) mergeconfig commitmode) ( reparent adjtree adjmergecommit =<< getcurrentcommit , return False ) diff --git a/Annex/AutoMerge.hs b/Annex/AutoMerge.hs index e6f2be552..26f58a98e 100644 --- a/Annex/AutoMerge.hs +++ b/Annex/AutoMerge.hs @@ -43,16 +43,16 @@ import qualified Data.ByteString.Lazy as L - Callers should use Git.Branch.changed first, to make sure that - there are changes from the current branch to the branch being merged in. -} -autoMergeFrom :: Git.Ref -> Maybe Git.Ref -> Git.Branch.CommitMode -> Annex Bool -autoMergeFrom branch currbranch commitmode = do +autoMergeFrom :: Git.Ref -> Maybe Git.Ref -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Annex Bool +autoMergeFrom branch currbranch mergeconfig commitmode = do showOutput case currbranch of Nothing -> go Nothing Just b -> go =<< inRepo (Git.Ref.sha b) where go old = ifM isDirect - ( mergeDirect currbranch old branch (resolveMerge old branch False) commitmode - , inRepo (Git.Merge.mergeNonInteractive branch commitmode) + ( mergeDirect currbranch old branch (resolveMerge old branch False) mergeconfig commitmode + , inRepo (Git.Merge.merge branch mergeconfig commitmode) <||> (resolveMerge old branch False <&&> commitResolvedMerge commitmode) ) diff --git a/Annex/Direct.hs b/Annex/Direct.hs index 782803e71..5724d1162 100644 --- a/Annex/Direct.hs +++ b/Annex/Direct.hs @@ -162,8 +162,8 @@ addDirect file cache = do - file. This is the same as what git does when updating the index - normally. -} -mergeDirect :: Maybe Git.Ref -> Maybe Git.Ref -> Git.Branch -> Annex Bool -> Git.Branch.CommitMode -> Annex Bool -mergeDirect startbranch oldref branch resolvemerge commitmode = exclusively $ do +mergeDirect :: Maybe Git.Ref -> Maybe Git.Ref -> Git.Branch -> Annex Bool -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Annex Bool +mergeDirect startbranch oldref branch resolvemerge mergeconfig commitmode = exclusively $ do reali <- liftIO . absPath =<< fromRepo indexFile tmpi <- liftIO . absPath =<< fromRepo indexFileLock liftIO $ whenM (doesFileExist reali) $ @@ -176,7 +176,7 @@ mergeDirect startbranch oldref branch resolvemerge commitmode = exclusively $ do createDirectoryIfMissing True d withIndexFile tmpi $ do - merged <- stageMerge d branch commitmode + merged <- stageMerge d branch mergeconfig commitmode ok <- if merged then return True else resolvemerge @@ -195,19 +195,18 @@ mergeDirect startbranch oldref branch resolvemerge commitmode = exclusively $ do {- Stage a merge into the index, avoiding changing HEAD or the current - branch. -} -stageMerge :: FilePath -> Git.Branch -> Git.Branch.CommitMode -> Annex Bool -stageMerge d branch commitmode = do +stageMerge :: FilePath -> Git.Branch -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Annex Bool +stageMerge d branch mergeconfig commitmode = do -- XXX A bug in git makes stageMerge unsafe to use if the git repo -- is configured with core.symlinks=false - -- Using mergeNonInteractive is not ideal though, since it will + -- Using merge is not ideal though, since it will -- update the current branch immediately, before the work tree -- has been updated, which would leave things in an inconsistent -- state if mergeDirectCleanup is interrupted. -- <http://marc.info/?l=git&m=140262402204212&w=2> - liftIO $ print ("stagemerge in", d) merger <- ifM (coreSymlinks <$> Annex.getGitConfig) - ( return Git.Merge.stageMerge - , return $ \ref -> Git.Merge.mergeNonInteractive ref commitmode + ( return $ \ref -> Git.Merge.stageMerge ref mergeconfig + , return $ \ref -> Git.Merge.merge ref mergeconfig commitmode ) inRepo $ \g -> do wd <- liftIO $ absPath d |