fix test suite when git is too old to understand --allow-unrelated-histories

This commit is contained in:
Joey Hess 2019-03-22 13:47:16 -04:00
parent 06cbaa4233
commit b6a3d0ae10
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 16 additions and 6 deletions

View file

@ -10,6 +10,7 @@ module Git.Merge (
CommitMode(..), CommitMode(..),
merge, merge,
merge', merge',
mergeUnrelatedHistoriesParam,
stageMerge, stageMerge,
) where ) where
@ -44,15 +45,21 @@ merge' extraparams branch mergeconfig commitmode r
merge'' :: [CommandParam] -> [MergeConfig] -> Repo -> IO Bool merge'' :: [CommandParam] -> [MergeConfig] -> Repo -> IO Bool
merge'' ps mergeconfig r merge'' ps mergeconfig r
| MergeUnrelatedHistories `elem` mergeconfig = | MergeUnrelatedHistories `elem` mergeconfig = do
ifM (Git.Version.older "2.9.0") up <- mergeUnrelatedHistoriesParam
( go ps go (ps ++ maybeToList up)
, go (ps ++ [Param "--allow-unrelated-histories"])
)
| otherwise = go ps | otherwise = go ps
where where
go ps' = runBool ps' r 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.-} {- Stage the merge into the index, but do not commit it.-}
stageMerge :: Ref -> [MergeConfig] -> Repo -> IO Bool stageMerge :: Ref -> [MergeConfig] -> Repo -> IO Bool
stageMerge branch = merge'' stageMerge branch = merge''

View file

@ -36,6 +36,7 @@ import qualified Git.Types
import qualified Git.Ref import qualified Git.Ref
import qualified Git.LsTree import qualified Git.LsTree
import qualified Git.FilePath import qualified Git.FilePath
import qualified Git.Merge
import qualified Annex.Locations import qualified Annex.Locations
#ifndef mingw32_HOST_OS #ifndef mingw32_HOST_OS
import qualified Types.GitConfig import qualified Types.GitConfig
@ -1739,7 +1740,9 @@ test_export_import = intmpclonerepoInDirect $ do
writedir "import" (content "import") writedir "import" (content "import")
git_annex "import" ["master", "--from", "foo"] @? "import from dir failed" 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 -- FIXME fails when in an adjusted unlocked branch because
-- it's imported locked -- it's imported locked
--annexed_present "import" --annexed_present "import"