Show More
@@ -404,6 +404,29 b' def message(ui, repo, ctx, ha, opts):' | |||||
404 | # We didn't make an edit, so just indicate no replaced nodes |
|
404 | # We didn't make an edit, so just indicate no replaced nodes | |
405 | return newctx, [] |
|
405 | return newctx, [] | |
406 |
|
406 | |||
|
407 | def findoutgoing(ui, repo, remote=None, force=False, opts={}): | |||
|
408 | """utility function to find the first outgoing changeset | |||
|
409 | ||||
|
410 | Used by initialisation code""" | |||
|
411 | dest = ui.expandpath(remote or 'default-push', remote or 'default') | |||
|
412 | dest, revs = hg.parseurl(dest, None)[:2] | |||
|
413 | ui.status(_('comparing with %s\n') % util.hidepassword(dest)) | |||
|
414 | ||||
|
415 | revs, checkout = hg.addbranchrevs(repo, repo, revs, None) | |||
|
416 | other = hg.peer(repo, opts, dest) | |||
|
417 | ||||
|
418 | if revs: | |||
|
419 | revs = [repo.lookup(rev) for rev in revs] | |||
|
420 | ||||
|
421 | # hexlify nodes from outgoing, because we're going to parse | |||
|
422 | # parent[0] using revsingle below, and if the binary hash | |||
|
423 | # contains special revset characters like ":" the revset | |||
|
424 | # parser can choke. | |||
|
425 | outgoing = discovery.findcommonoutgoing(repo, other, revs, force=force) | |||
|
426 | if not outgoing.missing: | |||
|
427 | raise util.Abort(_('no outgoing ancestors')) | |||
|
428 | return outgoing.missing[0] | |||
|
429 | ||||
407 | actiontable = {'p': pick, |
|
430 | actiontable = {'p': pick, | |
408 | 'pick': pick, |
|
431 | 'pick': pick, | |
409 | 'e': edit, |
|
432 | 'e': edit, | |
@@ -466,33 +489,11 b' def histedit(ui, repo, *freeargs, **opts' | |||||
466 | raise util.Abort( |
|
489 | raise util.Abort( | |
467 | _('only one repo argument allowed with --outgoing')) |
|
490 | _('only one repo argument allowed with --outgoing')) | |
468 | else: |
|
491 | else: | |
469 | parent = list(freeargs) + opts.get('rev', []) |
|
492 | revs.extend(freeargs) | |
470 |
if len( |
|
493 | if len(revs) != 1: | |
471 | raise util.Abort( |
|
494 | raise util.Abort( | |
472 | _('histedit requires exactly one parent revision')) |
|
495 | _('histedit requires exactly one parent revision')) | |
473 |
|
496 | |||
474 | if opts.get('outgoing'): |
|
|||
475 | if freeargs: |
|
|||
476 | parent = freeargs[0] |
|
|||
477 |
|
||||
478 | dest = ui.expandpath(parent or 'default-push', parent or 'default') |
|
|||
479 | dest, revs = hg.parseurl(dest, None)[:2] |
|
|||
480 | ui.status(_('comparing with %s\n') % util.hidepassword(dest)) |
|
|||
481 |
|
||||
482 | revs, checkout = hg.addbranchrevs(repo, repo, revs, None) |
|
|||
483 | other = hg.peer(repo, opts, dest) |
|
|||
484 |
|
||||
485 | if revs: |
|
|||
486 | revs = [repo.lookup(rev) for rev in revs] |
|
|||
487 |
|
||||
488 | # hexlify nodes from outgoing, because we're going to parse |
|
|||
489 | # parent[0] using revsingle below, and if the binary hash |
|
|||
490 | # contains special revset characters like ":" the revset |
|
|||
491 | # parser can choke. |
|
|||
492 | parent = [node.hex(n) for n in discovery.findcommonoutgoing( |
|
|||
493 | repo, other, revs, force=force).missing[0:1]] |
|
|||
494 | if not parent: |
|
|||
495 | raise util.Abort(_('no outgoing ancestors')) |
|
|||
496 |
|
497 | |||
497 | if goal == 'continue': |
|
498 | if goal == 'continue': | |
498 | (parentctxnode, rules, keep, topmost, replacements) = readstate(repo) |
|
499 | (parentctxnode, rules, keep, topmost, replacements) = readstate(repo) | |
@@ -513,20 +514,27 b' def histedit(ui, repo, *freeargs, **opts' | |||||
513 | cmdutil.bailifchanged(repo) |
|
514 | cmdutil.bailifchanged(repo) | |
514 |
|
515 | |||
515 | topmost, empty = repo.dirstate.parents() |
|
516 | topmost, empty = repo.dirstate.parents() | |
516 |
|
517 | if outg: | ||
517 | parent = scmutil.revsingle(repo, parent[0]).node() |
|
518 | if freeargs: | |
|
519 | remote = freeargs[0] | |||
|
520 | else: | |||
|
521 | remote = None | |||
|
522 | root = findoutgoing(ui, repo, remote, force, opts) | |||
|
523 | else: | |||
|
524 | root = revs[0] | |||
|
525 | root = scmutil.revsingle(repo, root).node() | |||
518 |
|
526 | |||
519 | keep = opts.get('keep', False) |
|
527 | keep = opts.get('keep', False) | |
520 |
revs = between(repo, |
|
528 | revs = between(repo, root, topmost, keep) | |
521 | if not revs: |
|
529 | if not revs: | |
522 | raise util.Abort(_('%s is not an ancestor of working directory') % |
|
530 | raise util.Abort(_('%s is not an ancestor of working directory') % | |
523 |
node.short( |
|
531 | node.short(root)) | |
524 |
|
532 | |||
525 | ctxs = [repo[r] for r in revs] |
|
533 | ctxs = [repo[r] for r in revs] | |
526 | if not rules: |
|
534 | if not rules: | |
527 | rules = '\n'.join([makedesc(c) for c in ctxs]) |
|
535 | rules = '\n'.join([makedesc(c) for c in ctxs]) | |
528 | rules += '\n\n' |
|
536 | rules += '\n\n' | |
529 |
rules += editcomment % (node.short( |
|
537 | rules += editcomment % (node.short(root), node.short(topmost)) | |
530 | rules = ui.edit(rules, ui.username()) |
|
538 | rules = ui.edit(rules, ui.username()) | |
531 | # Save edit rules in .hg/histedit-last-edit.txt in case |
|
539 | # Save edit rules in .hg/histedit-last-edit.txt in case | |
532 | # the user needs to ask for help after something |
|
540 | # the user needs to ask for help after something | |
@@ -545,7 +553,7 b' def histedit(ui, repo, *freeargs, **opts' | |||||
545 | if l and not l[0] == '#'] |
|
553 | if l and not l[0] == '#'] | |
546 | rules = verifyrules(rules, repo, ctxs) |
|
554 | rules = verifyrules(rules, repo, ctxs) | |
547 |
|
555 | |||
548 |
parentctx = repo[ |
|
556 | parentctx = repo[root].parents()[0] | |
549 | keep = opts.get('keep', False) |
|
557 | keep = opts.get('keep', False) | |
550 | replacements = [] |
|
558 | replacements = [] | |
551 |
|
559 |
General Comments 0
You need to be logged in to leave comments.
Login now