aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-06-13 14:18:22 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-06-13 14:18:22 -0400
commite45dc368733dbce902e35f0e77ce20e687f98280 (patch)
treec88657c2576947a3f03687cc67c7536a029d0bcf
parent45279bc31bad704223c1c552e811186411b7c651 (diff)
v6: Fix bad merge in an adjusted branch that resulted in an empty tree.
-rw-r--r--Annex/AdjustedBranch.hs12
-rw-r--r--CHANGELOG1
2 files changed, 10 insertions, 3 deletions
diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs
index 5fcb74149..ae5ad9a51 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 a860dbb10..ea8905b14 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