Deal with change in git 2.0 that made indirect mode merge conflict resolution leave behind old files.

I think this is a git behavior change, but have not checked to be sure.
Conflict cruft used to look like $foo~HEAD, but now just $foo is left
behind as conflict cruft.

With test case.
This commit is contained in:
Joey Hess 2014-07-11 16:56:19 -04:00
parent cb66ca3a76
commit 61a35de433
3 changed files with 5 additions and 2 deletions

View file

@ -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