On Fri, Dec 16, 2016, 23:53 Pierre-Yves David < pierre-yves.da...@ens-lyon.org> wrote:
> > > On 11/05/2016 12:58 AM, Martin von Zweigbergk via Mercurial-devel wrote: > > # HG changeset patch > > # User Martin von Zweigbergk <martinv...@google.com> > > # Date 1478303512 25200 > > # Fri Nov 04 16:51:52 2016 -0700 > > # Node ID bb80851fe9a6e14263f0076074108556377141f9 > > # Parent cb2bac3253fbd52894ffcb4719a148fe6a3da38b > > fold: disallow multiple revisions without --exact > > > > It's very easy to think that "hg fold 4::6" will fold exactly those > > revisions. In reality, it will fold those *and* any revisions between > > them and the working copy. It seems very likely that users who pass > > more than one revision wants to fold exactly those revisions, so let's > > abort and hint that they may be looking for --exact. > > That seems a good first step to take in all cases. Unfortunately, the > patch fails to apply for an unclear reason. Can you send me a new version? > > In addition, I suggest the following changes: > > - we should allow multiple revision if '.' is one of them. They will be > no surprise in this case. > Even if there is a gap between the revisions and '.'? I wonder if we should fail only if the given commits form a contiguous range (I assume that's required for --exact). So "hg fold .^^" would work because it is a single revision. "hg fold .^^ .^" would fail because it's multiple revisions. "hg fold .^ ." would work because it includes '.'. "hg fold .^ .^2" works because it's not a contiguous range (without the implicit '.'). It does feel like a little too much logic too the degree that it may surprise users, but I think the behavior without it may surprise users even more. > - update to the commit message, > > abort: multiple revisions specified > (do you want --exact?, see "hg help fold" for details) > > > (I'll tell more about possible changes to the default in the rest of the > thread) > Having said the above, I'm more in favor of making --exact the default and not needing the protection mentioned above, so I'm looking forward to hearing what you have to say here. > > diff -r cb2bac3253fb -r bb80851fe9a6 hgext/evolve.py > > --- a/hgext/evolve.py Wed Nov 02 18:56:44 2016 +0100 > > +++ b/hgext/evolve.py Fri Nov 04 16:51:52 2016 -0700 > > @@ -3115,6 +3115,11 @@ > > revs = scmutil.revrange(repo, revs) > > > > if not opts['exact']: > > + if len(revs) > 1: > > + raise error.Abort(_("cannot fold from working directory to " > > + "more than one revision"), > > + hint=_("did you mean to use --exact?")) > > + > > # Try to extend given revision starting from the working > directory > > extrevs = repo.revs('(%ld::.) or (.::%ld)', revs, revs) > > discardedrevs = [r for r in revs if r not in extrevs] > > diff -r cb2bac3253fb -r bb80851fe9a6 tests/test-evolve.t > > --- a/tests/test-evolve.t Wed Nov 02 18:56:44 2016 +0100 > > +++ b/tests/test-evolve.t Fri Nov 04 16:51:52 2016 -0700 > > @@ -688,7 +688,11 @@ > > $ hg fold -r 4 -r 6 --exact > > abort: cannot fold non-linear revisions (multiple roots given) > > [255] > > - $ hg fold 10 1 > > + $ hg fold 4::5 > > + abort: cannot fold from working directory to more than one revision > > + (did you mean to use --exact?) > > + [255] > > + $ hg fold 1 > > abort: cannot fold non-linear revisions > > (given revisions are unrelated to parent of working directory) > > [255] > > diff -r cb2bac3253fb -r bb80851fe9a6 tests/test-userguide.t > > --- a/tests/test-userguide.t Wed Nov 02 18:56:44 2016 +0100 > > +++ b/tests/test-userguide.t Fri Nov 04 16:51:52 2016 -0700 > > @@ -109,7 +109,7 @@ > > 7:05e61aab8294 step 1 > > 8:be6d5bc8e4cc step 2 > > 9:35f432d9f7c1 step 3 > > - $ hg fold -d '0 0' -m 'fix bug 64' -r 7:: > > + $ hg fold -d '0 0' -m 'fix bug 64' -r 7 > > 3 changesets folded > > 1 files updated, 0 files merged, 0 files removed, 0 files unresolved > > $ hg --hidden shortlog -G -r 6:: > > > -- > Pierre-Yves David >
_______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel