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:
parent
cb66ca3a76
commit
61a35de433
3 changed files with 5 additions and 2 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue