From b6a3d0ae108c370e156ee33480f88ac0f17cd63f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 22 Mar 2019 13:47:16 -0400 Subject: [PATCH] fix test suite when git is too old to understand --allow-unrelated-histories --- Git/Merge.hs | 17 ++++++++++++----- Test.hs | 5 ++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Git/Merge.hs b/Git/Merge.hs index 65c571659c..a2c04d7139 100644 --- a/Git/Merge.hs +++ b/Git/Merge.hs @@ -10,6 +10,7 @@ module Git.Merge ( CommitMode(..), merge, merge', + mergeUnrelatedHistoriesParam, stageMerge, ) where @@ -44,15 +45,21 @@ merge' extraparams branch mergeconfig commitmode r merge'' :: [CommandParam] -> [MergeConfig] -> Repo -> IO Bool merge'' ps mergeconfig r - | MergeUnrelatedHistories `elem` mergeconfig = - ifM (Git.Version.older "2.9.0") - ( go ps - , go (ps ++ [Param "--allow-unrelated-histories"]) - ) + | MergeUnrelatedHistories `elem` mergeconfig = do + up <- mergeUnrelatedHistoriesParam + go (ps ++ maybeToList up) | otherwise = go ps where go ps' = runBool ps' r +{- Git used to default to merging unrelated histories; newer versions need + - an option. -} +mergeUnrelatedHistoriesParam :: IO (Maybe CommandParam) +mergeUnrelatedHistoriesParam = ifM (Git.Version.older "2.9.0") + ( return Nothing + , return (Just (Param "--allow-unrelated-histories")) + ) + {- Stage the merge into the index, but do not commit it.-} stageMerge :: Ref -> [MergeConfig] -> Repo -> IO Bool stageMerge branch = merge'' diff --git a/Test.hs b/Test.hs index 854df59f9d..c9bd99d95b 100644 --- a/Test.hs +++ b/Test.hs @@ -36,6 +36,7 @@ import qualified Git.Types import qualified Git.Ref import qualified Git.LsTree import qualified Git.FilePath +import qualified Git.Merge import qualified Annex.Locations #ifndef mingw32_HOST_OS import qualified Types.GitConfig @@ -1739,7 +1740,9 @@ test_export_import = intmpclonerepoInDirect $ do writedir "import" (content "import") git_annex "import" ["master", "--from", "foo"] @? "import from dir failed" - boolSystem "git" [Param "merge", Param "foo/master", Param "-mmerge", Param "--allow-unrelated-histories"] @? "git merge foo/master failed" + up <- Git.Merge.mergeUnrelatedHistoriesParam + let mergeps = [Param "merge", Param "foo/master", Param "-mmerge"] ++ maybeToList up + boolSystem "git" mergeps @? "git merge foo/master failed" -- FIXME fails when in an adjusted unlocked branch because -- it's imported locked --annexed_present "import"