Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cmdutil.py @ 27985:79139c7a88bd
revert: makes interactive mode ask to forget added files (issue4936)
Before this patch revert interactive mode unconditionally forgets
added files. This patch fixes this by asking user if he wants
to forget added file. If user doesn't want to forget given file,
it is added to matcher_opts exclude list, to not reviewing it
later with other modified files.
author | liscju <piotr.listkiewicz@gmail.com> |
---|---|
date | Fri, 05 Feb 2016 15:18:40 +0100 |
parents | ce9696193175 |
children | d3f1b7ee5e70 |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Thu Feb 04 15:38:04 2016 -0800 +++ b/mercurial/cmdutil.py Fri Feb 05 15:18:40 2016 +0100 @@ -3130,13 +3130,26 @@ """ parent, p2 = parents node = ctx.node() + excluded_files = [] + matcher_opts = {"exclude": excluded_files} + def checkout(f): fc = ctx[f] repo.wwrite(f, fc.data(), fc.flags()) audit_path = pathutil.pathauditor(repo.root) for f in actions['forget'][0]: - repo.dirstate.drop(f) + if interactive: + choice = \ + repo.ui.promptchoice( + _("forget added file %s (yn)?$$ &Yes $$ &No") + % f) + if choice == 0: + repo.dirstate.drop(f) + else: + excluded_files.append(repo.wjoin(f)) + else: + repo.dirstate.drop(f) for f in actions['remove'][0]: audit_path(f) try: @@ -3162,7 +3175,7 @@ if interactive: # Prompt the user for changes to revert torevert = [repo.wjoin(f) for f in actions['revert'][0]] - m = scmutil.match(ctx, torevert, {}) + m = scmutil.match(ctx, torevert, matcher_opts) diffopts = patch.difffeatureopts(repo.ui, whitespace=True) diffopts.nodates = True diffopts.git = True