D3870: rebase: add --confirm option

Yuya Nishihara yuya at tcha.org
Mon Jul 9 09:15:24 EDT 2018


>  def _dryrunrebase(ui, repo, opts):
>      rbsrt = rebaseruntime(repo, ui, inmemory=True, opts=opts)
> -    ui.status(_('starting dry-run rebase; repository will not be changed\n'))
> +    confirm = opts.get('confirm')
> +    if confirm:
> +        ui.status(_('starting rebase...\n'))
> +    else:
> +        ui.status(_('starting dry-run rebase; repository will not be '
> +                    'changed\n'))

Nit: Perhaps --dry-run should precede --confirm, or "--dryrun --confirm" should
be rejected.

>      with repo.wlock(), repo.lock():
>          try:
>              overrides = {('rebase', 'singletransaction'): True}
>              with ui.configoverride(overrides, 'rebase'):
>                  _origrebase(ui, repo, opts, rbsrt, inmemory=True,
>                              leaveunfinished=True, supptrwarns=True)
>          except error.InMemoryMergeConflictsError:
> +            conflict = True
>              ui.status(_('hit a merge conflict\n'))
>              return 1
>          else:
> -            ui.status(_('dry-run rebase completed successfully; run without '
> -                        '-n/--dry-run to perform this rebase\n'))
> +            conflict = False
> +            if confirm:
> +                ui.status(_('rebase completed successfully\n'))
> +            else:
> +                ui.status(_('dry-run rebase completed successfully; run without'
> +                            ' -n/--dry-run to perform this rebase\n'))
>              return 0
>          finally:
>              # no need to store backup in case of dryrun
>              rbsrt._prepareabortorcontinue(isabort=True, backup=False,
>                                            suppwarns=True)
> +            if confirm:
> +                if not ui.promptchoice(_(b'apply changes (yn)?'
> +                                         b'$$ &Yes $$ &No')):
> +                    if not conflict:
> +                        inmemory = ui.configbool('rebase',
> +                                                 'experimental.inmemory')
> +                        return _dorebase(ui, repo, opts, inmemory=inmemory)
> +                    return _dorebase(ui, repo, opts)

Can't we just "finish" the last in-memory rebase if "apply changes" selected?


More information about the Mercurial-devel mailing list