sync: Automatically resolve merge conflict between and annexed file and a regular git file.
This is a new feature, it was not handled before, since it's a bit of an edge case. However, it can be handled exactly the same as a file/dir conflict, just leave the non-annexed item alone. While implementing this, the core resolveMerge' function got a lot simpler and clearer. Note especially that where before there was an asymetric call to stagefromdirectmergedir, now graftin is called symmetrically in both cases. And, in order to add that `graftin us`, the current branch needed to be known (if there is no current branch, there cannot be a merge conflict). This led to some cleanups of how autoMergeFrom behaved when there is no current branch. This commit was sponsored by Philippe Gauthier.
This commit is contained in:
parent
1fcc5bef66
commit
14d1e878ab
5 changed files with 81 additions and 77 deletions
9
Test.hs
9
Test.hs
|
@ -925,8 +925,8 @@ test_nonannexed_conflict_resolution env = do
|
|||
when switchdirect $
|
||||
git_annex env "direct" [] @? "failed switching to direct mode"
|
||||
git_annex env "sync" [] @? "sync failed"
|
||||
checkmerge "r1" r1
|
||||
checkmerge "r2" r2
|
||||
checkmerge ("r1" ++ show switchdirect) r1
|
||||
checkmerge ("r2" ++ show switchdirect) r2
|
||||
conflictor = "conflictor"
|
||||
nonannexed_content = "nonannexed"
|
||||
variantprefix = conflictor ++ ".variant"
|
||||
|
@ -936,8 +936,9 @@ test_nonannexed_conflict_resolution env = do
|
|||
not (null v)
|
||||
@? (what ++ " conflictor variant file missing in: " ++ show l )
|
||||
conflictor `elem` l @? (what ++ " conflictor file missing in: " ++ show l)
|
||||
s <- readFile (d </> conflictor)
|
||||
s == nonannexed_content @? (what ++ " wrong content for nonannexed file: " ++ s)
|
||||
s <- catchMaybeIO (readFile (d </> conflictor))
|
||||
s == Just nonannexed_content
|
||||
@? (what ++ " wrong content for nonannexed file: " ++ show s)
|
||||
|
||||
{- Check merge conflict resolution when there is a local file,
|
||||
- that is not staged or committed, that conflicts with what's being added
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue