[PATCH] revert: makes interactive mode ask user if he wants to forget added files (issue4936)
Augie Fackler
raf at durin42.com
Fri Feb 5 10:54:24 EST 2016
On Fri, Feb 05, 2016 at 10:47:33AM -0500, Augie Fackler wrote:
> On Fri, Feb 05, 2016 at 03:20:26PM +0100, liscju wrote:
> > # HG changeset patch
> > # User liscju <piotr.listkiewicz at gmail.com>
> > # Date 1454681920 -3600
> > # Fri Feb 05 15:18:40 2016 +0100
> > # Node ID bfd4cc9096ee1b3d451e8f68c767b93644488f00
> > # Parent 01a5143cd25f285f8c745a92986cd7186bb32c90
> > revert: makes interactive mode ask user if he wants to forget added files (issue4936)
>
> Queued, very nice.
But check-code and check-commit both send seasonal greetings (will fix
in flight).
>
> >
> > 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.
> >
> > diff -r 01a5143cd25f -r bfd4cc9096ee mercurial/cmdutil.py
> > --- a/mercurial/cmdutil.py Wed Feb 03 16:24:24 2016 -0600
> > +++ b/mercurial/cmdutil.py Fri Feb 05 15:18:40 2016 +0100
> > @@ -3130,13 +3130,25 @@
> > """
> > 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(
> > + _("Would you like to forget 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 +3174,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
> > diff -r 01a5143cd25f -r bfd4cc9096ee tests/test-revert-interactive.t
> > --- a/tests/test-revert-interactive.t Wed Feb 03 16:24:24 2016 -0600
> > +++ b/tests/test-revert-interactive.t Fri Feb 05 15:18:40 2016 +0100
> > @@ -15,6 +15,7 @@
> > > interactive = true
> > > [extensions]
> > > record =
> > + > purge =
> > > EOF
> >
> >
> > @@ -377,3 +378,26 @@
> > 5
> > d
> > +lastline
> > +
> > + $ hg update -C .
> > + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > + $ hg purge
> > + $ touch newfile
> > + $ hg add newfile
> > + $ hg status
> > + A newfile
> > + $ hg revert -i <<EOF
> > + > n
> > + > EOF
> > + forgetting newfile
> > + Would you like to forget file newfile (Yn)? n
> > + $ hg status
> > + A newfile
> > + $ hg revert -i <<EOF
> > + > y
> > + > EOF
> > + forgetting newfile
> > + Would you like to forget file newfile (Yn)? y
> > + $ hg status
> > + ? newfile
> > +
> > _______________________________________________
> > Mercurial-devel mailing list
> > Mercurial-devel at mercurial-scm.org
> > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list