summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Annex/AutoMerge.hs4
-rw-r--r--Test.hs1
-rw-r--r--debian/changelog2
3 files changed, 5 insertions, 2 deletions
diff --git a/Annex/AutoMerge.hs b/Annex/AutoMerge.hs
index 6695c6d38..660d79f63 100644
--- a/Annex/AutoMerge.hs
+++ b/Annex/AutoMerge.hs
@@ -177,7 +177,7 @@ resolveMerge' (Just us) them u = do
return (Just file)
{- git-merge moves conflicting files away to files
- - named something like f~HEAD or f~branch, but the
+ - named something like f~HEAD or f~branch or just f, but the
- exact name chosen can vary. Once the conflict is resolved,
- this cruft can be deleted. To avoid deleting legitimate
- files that look like this, only delete files that are
@@ -194,7 +194,7 @@ cleanConflictCruft resolvedfs top = do
liftIO $ nukeFile f
| otherwise = noop
s = S.fromList resolvedfs
- matchesresolved f = S.member (base f) s
+ matchesresolved f = S.member f s || S.member (base f) s
base f = reverse $ drop 1 $ dropWhile (/= '~') $ reverse f
commitResolvedMerge :: Git.Branch.CommitMode -> Annex Bool
diff --git a/Test.hs b/Test.hs
index 39da14e65..3ae5e323b 100644
--- a/Test.hs
+++ b/Test.hs
@@ -857,6 +857,7 @@ test_conflict_resolution testenv =
let v = filter (variantprefix `isPrefixOf`) l
length v == 2
@? (what ++ " not exactly 2 variant files in: " ++ show l)
+ conflictor `notElem` l @? ("conflictor still present after conflict resolution")
indir testenv d $ do
git_annex testenv "get" v @? "get failed"
git_annex_expectoutput testenv "find" v v
diff --git a/debian/changelog b/debian/changelog
index 39642b575..0b15e7754 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,8 @@ git-annex (5.20140710) UNRELEASED; urgency=medium
it.
* resolvemerge: New plumbing command that runs the automatic merge conflict
resolver.
+ * Deal with change in git 2.0 that made indirect mode merge conflict
+ resolution leave behind old files.
-- Joey Hess <joeyh@debian.org> Wed, 09 Jul 2014 23:29:21 -0400