From bfd00a0f8ca69cb0669df50f8d98354f11c5253c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 13 Jun 2016 14:18:22 -0400 Subject: [PATCH] v6: Fix bad merge in an adjusted branch that resulted in an empty tree. --- Annex/AdjustedBranch.hs | 12 +++++++++--- CHANGELOG | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs index 5fcb74149d..ae5ad9a518 100644 --- a/Annex/AdjustedBranch.hs +++ b/Annex/AdjustedBranch.hs @@ -358,10 +358,16 @@ updateAdjustedBranch tomerge (origbranch, adj) mergeconfig commitmode = catchBoo withTmpDirIn misctmpdir "git" $ \tmpgit -> withWorkTreeRelated tmpgit $ withemptydir tmpwt $ withWorkTree tmpwt $ do liftIO $ writeFile (tmpgit "HEAD") (fromRef updatedorig) + -- This reset makes git merge not care + -- that the work tree is empty; otherwise + -- it will think that all the files have + -- been staged for deletion, and sometimes + -- the merge includes these deletions + -- (for an unknown reason). + -- http://thread.gmane.org/gmane.comp.version-control.git/297237 + inRepo $ Git.Command.run [Param "reset", Param "HEAD", Param "--quiet"] 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.merge' [Param "--no-ff"] tomerge mergeconfig commitmode) + merged <- inRepo (Git.Merge.merge' [] tomerge mergeconfig commitmode) <||> (resolveMerge (Just updatedorig) tomerge True <&&> commitResolvedMerge commitmode) if merged then do diff --git a/CHANGELOG b/CHANGELOG index a860dbb104..ea8905b14b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -22,6 +22,7 @@ git-annex (6.20160528) UNRELEASED; urgency=medium drop content from disk before writing location log. * v6: Fix bad automatic merge conflict resolution between an annexed file and a directory with the same name when in an adjusted branch. + * v6: Fix bad merge in an adjusted branch that resulted in an empty tree. * Avoid a crash if getpwuid does not work, when querying the user's full name. * v6: Fix bug in initialization of clone from a repo with an adjusted branch