comparison mercurial/merge.py @ 20639:1df033640a8e

merge: handle acceptremove of create+delete early in manifest merge
author Mads Kiilerich <madski@unity3d.com>
date Fri, 28 Feb 2014 02:26:03 +0100
parents bedb9f1a6b4e
children 52929dcdd512
comparison
equal deleted inserted replaced
20638:b228ad1f79d7 20639:1df033640a8e
421 f2 = copy[f] 421 f2 = copy[f]
422 actions.append((f, "m", (f2, f, False), 422 actions.append((f, "m", (f2, f, False),
423 "local copied/moved to " + f2)) 423 "local copied/moved to " + f2))
424 elif n1 and f in ma: # clean, a different, no remote 424 elif n1 and f in ma: # clean, a different, no remote
425 if n1 != ma[f]: 425 if n1 != ma[f]:
426 prompts.append((f, "cd")) # prompt changed/deleted 426 if acceptremote:
427 actions.append((f, "r", None, "remote delete"))
428 else:
429 prompts.append((f, "cd")) # prompt changed/deleted
427 elif n1[20:] == "a": # added, no remote 430 elif n1[20:] == "a": # added, no remote
428 actions.append((f, "f", None, "remote deleted")) 431 actions.append((f, "f", None, "remote deleted"))
429 else: 432 else:
430 actions.append((f, "r", None, "other deleted")) 433 actions.append((f, "r", None, "other deleted"))
431 elif n2 and f in movewithdir: 434 elif n2 and f in movewithdir:
468 different = _checkunknownfile(repo, wctx, p2, f) 471 different = _checkunknownfile(repo, wctx, p2, f)
469 if not force and different: 472 if not force and different:
470 aborts.append((f, "ud")) 473 aborts.append((f, "ud"))
471 else: 474 else:
472 # if different: old untracked f may be overwritten and lost 475 # if different: old untracked f may be overwritten and lost
473 prompts.append((f, "dc")) # prompt deleted/changed 476 if acceptremote:
477 actions.append((f, "g", (m2.flags(f),),
478 "remote recreating"))
479 else:
480 prompts.append((f, "dc")) # prompt deleted/changed
474 481
475 for f, m in sorted(aborts): 482 for f, m in sorted(aborts):
476 if m == "ud": 483 if m == "ud":
477 repo.ui.warn(_("%s: untracked file differs\n") % f) 484 repo.ui.warn(_("%s: untracked file differs\n") % f)
478 else: assert False, m 485 else: assert False, m
488 else: 495 else:
489 _checkcollision(repo, m1, actions, prompts) 496 _checkcollision(repo, m1, actions, prompts)
490 497
491 for f, m in sorted(prompts): 498 for f, m in sorted(prompts):
492 if m == "cd": 499 if m == "cd":
493 if acceptremote: 500 if repo.ui.promptchoice(
494 actions.append((f, "r", None, "remote delete"))
495 elif repo.ui.promptchoice(
496 _("local changed %s which remote deleted\n" 501 _("local changed %s which remote deleted\n"
497 "use (c)hanged version or (d)elete?" 502 "use (c)hanged version or (d)elete?"
498 "$$ &Changed $$ &Delete") % f, 0): 503 "$$ &Changed $$ &Delete") % f, 0):
499 actions.append((f, "r", None, "prompt delete")) 504 actions.append((f, "r", None, "prompt delete"))
500 else: 505 else:
501 actions.append((f, "a", None, "prompt keep")) 506 actions.append((f, "a", None, "prompt keep"))
502 elif m == "dc": 507 elif m == "dc":
503 if acceptremote: 508 if repo.ui.promptchoice(
504 actions.append((f, "g", (m2.flags(f),), "remote recreating"))
505 elif repo.ui.promptchoice(
506 _("remote changed %s which local deleted\n" 509 _("remote changed %s which local deleted\n"
507 "use (c)hanged version or leave (d)eleted?" 510 "use (c)hanged version or leave (d)eleted?"
508 "$$ &Changed $$ &Deleted") % f, 0) == 0: 511 "$$ &Changed $$ &Deleted") % f, 0) == 0:
509 actions.append((f, "g", (m2.flags(f),), "prompt recreating")) 512 actions.append((f, "g", (m2.flags(f),), "prompt recreating"))
510 else: assert False, m 513 else: assert False, m