839 actions[f] = 'r', None, "prompt same" |
839 actions[f] = 'r', None, "prompt same" |
840 elif m == 'dc' and f in ancestor and not mctx[f].cmp(ancestor[f]): |
840 elif m == 'dc' and f in ancestor and not mctx[f].cmp(ancestor[f]): |
841 # remote did change but ended up with same content |
841 # remote did change but ended up with same content |
842 del actions[f] # don't get = keep local deleted |
842 del actions[f] # don't get = keep local deleted |
843 |
843 |
844 def calculateupdates(repo, wctx, mctx, ancestors, branchmerge, force, partial, |
844 def calculateupdates(repo, wctx, mctx, ancestors, branchmerge, force, |
845 acceptremote, followcopies): |
845 acceptremote, followcopies, matcher=None): |
846 "Calculate the actions needed to merge mctx into wctx using ancestors" |
846 "Calculate the actions needed to merge mctx into wctx using ancestors" |
|
847 if matcher is None or matcher.always(): |
|
848 partial = False |
|
849 else: |
|
850 partial = matcher.matchfn |
847 |
851 |
848 if len(ancestors) == 1: # default |
852 if len(ancestors) == 1: # default |
849 actions, diverge, renamedelete = manifestmerge( |
853 actions, diverge, renamedelete = manifestmerge( |
850 repo, wctx, mctx, ancestors[0], branchmerge, force, partial, |
854 repo, wctx, mctx, ancestors[0], branchmerge, force, partial, |
851 acceptremote, followcopies) |
855 acceptremote, followcopies) |
1412 pass |
1416 pass |
1413 elif pas[0] and repo.ui.configbool('merge', 'followcopies', True): |
1417 elif pas[0] and repo.ui.configbool('merge', 'followcopies', True): |
1414 followcopies = True |
1418 followcopies = True |
1415 |
1419 |
1416 ### calculate phase |
1420 ### calculate phase |
1417 if matcher is None or matcher.always(): |
|
1418 partial = False |
|
1419 else: |
|
1420 partial = matcher.matchfn |
|
1421 actionbyfile, diverge, renamedelete = calculateupdates( |
1421 actionbyfile, diverge, renamedelete = calculateupdates( |
1422 repo, wc, p2, pas, branchmerge, force, partial, mergeancestor, |
1422 repo, wc, p2, pas, branchmerge, force, mergeancestor, |
1423 followcopies) |
1423 followcopies, matcher=matcher) |
1424 # Convert to dictionary-of-lists format |
1424 # Convert to dictionary-of-lists format |
1425 actions = dict((m, []) for m in 'a am f g cd dc r dm dg m e k'.split()) |
1425 actions = dict((m, []) for m in 'a am f g cd dc r dm dg m e k'.split()) |
1426 for f, (m, args, msg) in actionbyfile.iteritems(): |
1426 for f, (m, args, msg) in actionbyfile.iteritems(): |
1427 if m not in actions: |
1427 if m not in actions: |
1428 actions[m] = [] |
1428 actions[m] = [] |