Show More
@@ -4768,58 +4768,8 b' def merge(ui, repo, node=None, **opts):' | |||||
4768 | if node: |
|
4768 | if node: | |
4769 | node = scmutil.revsingle(repo, node).node() |
|
4769 | node = scmutil.revsingle(repo, node).node() | |
4770 |
|
4770 | |||
4771 | if not node and repo._activebookmark: |
|
4771 | if not node: | |
4772 | bmheads = repo.bookmarkheads(repo._activebookmark) |
|
4772 | node = scmutil.revsingle(repo, '_mergedefaultdest()').node() | |
4773 | curhead = repo[repo._activebookmark].node() |
|
|||
4774 | if len(bmheads) == 2: |
|
|||
4775 | if curhead == bmheads[0]: |
|
|||
4776 | node = bmheads[1] |
|
|||
4777 | else: |
|
|||
4778 | node = bmheads[0] |
|
|||
4779 | elif len(bmheads) > 2: |
|
|||
4780 | raise util.Abort(_("multiple matching bookmarks to merge - " |
|
|||
4781 | "please merge with an explicit rev or bookmark"), |
|
|||
4782 | hint=_("run 'hg heads' to see all heads")) |
|
|||
4783 | elif len(bmheads) <= 1: |
|
|||
4784 | raise util.Abort(_("no matching bookmark to merge - " |
|
|||
4785 | "please merge with an explicit rev or bookmark"), |
|
|||
4786 | hint=_("run 'hg heads' to see all heads")) |
|
|||
4787 |
|
||||
4788 | elif not node: |
|
|||
4789 | branch = repo[None].branch() |
|
|||
4790 | bheads = repo.branchheads(branch) |
|
|||
4791 | nbhs = [bh for bh in bheads if not repo[bh].bookmarks()] |
|
|||
4792 |
|
||||
4793 | if len(nbhs) > 2: |
|
|||
4794 | raise util.Abort(_("branch '%s' has %d heads - " |
|
|||
4795 | "please merge with an explicit rev") |
|
|||
4796 | % (branch, len(bheads)), |
|
|||
4797 | hint=_("run 'hg heads .' to see heads")) |
|
|||
4798 |
|
||||
4799 | parent = repo.dirstate.p1() |
|
|||
4800 | if len(nbhs) <= 1: |
|
|||
4801 | if len(bheads) > 1: |
|
|||
4802 | raise util.Abort(_("heads are bookmarked - " |
|
|||
4803 | "please merge with an explicit rev"), |
|
|||
4804 | hint=_("run 'hg heads' to see all heads")) |
|
|||
4805 | if len(repo.heads()) > 1: |
|
|||
4806 | raise util.Abort(_("branch '%s' has one head - " |
|
|||
4807 | "please merge with an explicit rev") |
|
|||
4808 | % branch, |
|
|||
4809 | hint=_("run 'hg heads' to see all heads")) |
|
|||
4810 | msg, hint = _('nothing to merge'), None |
|
|||
4811 | if parent != repo.lookup(branch): |
|
|||
4812 | hint = _("use 'hg update' instead") |
|
|||
4813 | raise util.Abort(msg, hint=hint) |
|
|||
4814 |
|
||||
4815 | if parent not in bheads: |
|
|||
4816 | raise util.Abort(_('working directory not at a head revision'), |
|
|||
4817 | hint=_("use 'hg update' or merge with an " |
|
|||
4818 | "explicit revision")) |
|
|||
4819 | if parent == nbhs[0]: |
|
|||
4820 | node = nbhs[-1] |
|
|||
4821 | else: |
|
|||
4822 | node = nbhs[0] |
|
|||
4823 |
|
4773 | |||
4824 | if opts.get('preview'): |
|
4774 | if opts.get('preview'): | |
4825 | # find nodes that are ancestors of p2 but not of p1 |
|
4775 | # find nodes that are ancestors of p2 but not of p1 |
@@ -463,6 +463,67 b' def func(repo, subset, a, b):' | |||||
463 |
|
463 | |||
464 | # functions |
|
464 | # functions | |
465 |
|
465 | |||
|
466 | def _mergedefaultdest(repo, subset, x): | |||
|
467 | # ``_mergedefaultdest()`` | |||
|
468 | ||||
|
469 | # default destination for merge. | |||
|
470 | # # XXX: Currently private because I expect the signature to change. | |||
|
471 | # # XXX: - taking rev as arguments, | |||
|
472 | # # XXX: - bailing out in case of ambiguity vs returning all data. | |||
|
473 | getargs(x, 0, 0, _("_mergedefaultdest takes no arguments")) | |||
|
474 | if repo._activebookmark: | |||
|
475 | bmheads = repo.bookmarkheads(repo._activebookmark) | |||
|
476 | curhead = repo[repo._activebookmark].node() | |||
|
477 | if len(bmheads) == 2: | |||
|
478 | if curhead == bmheads[0]: | |||
|
479 | node = bmheads[1] | |||
|
480 | else: | |||
|
481 | node = bmheads[0] | |||
|
482 | elif len(bmheads) > 2: | |||
|
483 | raise util.Abort(_("multiple matching bookmarks to merge - " | |||
|
484 | "please merge with an explicit rev or bookmark"), | |||
|
485 | hint=_("run 'hg heads' to see all heads")) | |||
|
486 | elif len(bmheads) <= 1: | |||
|
487 | raise util.Abort(_("no matching bookmark to merge - " | |||
|
488 | "please merge with an explicit rev or bookmark"), | |||
|
489 | hint=_("run 'hg heads' to see all heads")) | |||
|
490 | else: | |||
|
491 | branch = repo[None].branch() | |||
|
492 | bheads = repo.branchheads(branch) | |||
|
493 | nbhs = [bh for bh in bheads if not repo[bh].bookmarks()] | |||
|
494 | ||||
|
495 | if len(nbhs) > 2: | |||
|
496 | raise util.Abort(_("branch '%s' has %d heads - " | |||
|
497 | "please merge with an explicit rev") | |||
|
498 | % (branch, len(bheads)), | |||
|
499 | hint=_("run 'hg heads .' to see heads")) | |||
|
500 | ||||
|
501 | parent = repo.dirstate.p1() | |||
|
502 | if len(nbhs) <= 1: | |||
|
503 | if len(bheads) > 1: | |||
|
504 | raise util.Abort(_("heads are bookmarked - " | |||
|
505 | "please merge with an explicit rev"), | |||
|
506 | hint=_("run 'hg heads' to see all heads")) | |||
|
507 | if len(repo.heads()) > 1: | |||
|
508 | raise util.Abort(_("branch '%s' has one head - " | |||
|
509 | "please merge with an explicit rev") | |||
|
510 | % branch, | |||
|
511 | hint=_("run 'hg heads' to see all heads")) | |||
|
512 | msg, hint = _('nothing to merge'), None | |||
|
513 | if parent != repo.lookup(branch): | |||
|
514 | hint = _("use 'hg update' instead") | |||
|
515 | raise util.Abort(msg, hint=hint) | |||
|
516 | ||||
|
517 | if parent not in bheads: | |||
|
518 | raise util.Abort(_('working directory not at a head revision'), | |||
|
519 | hint=_("use 'hg update' or merge with an " | |||
|
520 | "explicit revision")) | |||
|
521 | if parent == nbhs[0]: | |||
|
522 | node = nbhs[-1] | |||
|
523 | else: | |||
|
524 | node = nbhs[0] | |||
|
525 | return subset & baseset([repo[node].rev()]) | |||
|
526 | ||||
466 | def adds(repo, subset, x): |
|
527 | def adds(repo, subset, x): | |
467 | """``adds(pattern)`` |
|
528 | """``adds(pattern)`` | |
468 | Changesets that add a file matching pattern. |
|
529 | Changesets that add a file matching pattern. | |
@@ -2100,6 +2161,7 b' def _hexlist(repo, subset, x):' | |||||
2100 | return baseset([r for r in ls if r in s]) |
|
2161 | return baseset([r for r in ls if r in s]) | |
2101 |
|
2162 | |||
2102 | symbols = { |
|
2163 | symbols = { | |
|
2164 | "_mergedefaultdest": _mergedefaultdest, | |||
2103 | "adds": adds, |
|
2165 | "adds": adds, | |
2104 | "all": getall, |
|
2166 | "all": getall, | |
2105 | "ancestor": ancestor, |
|
2167 | "ancestor": ancestor, |
General Comments 0
You need to be logged in to leave comments.
Login now