On Sun, 5 Mar 2017 14:18:06 +0100, Pierre-Yves David wrote: > On 03/05/2017 12:49 PM, Yuya Nishihara wrote: > > On Fri, 03 Mar 2017 14:40:45 +0100, Pierre-Yves David wrote: > >> # HG changeset patch > >> # User Pierre-Yves David <pierre-yves.da...@ens-lyon.org> > >> # Date 1488546500 -3600 > >> # Fri Mar 03 14:08:20 2017 +0100 > >> # Node ID 3e95bf7ed38189f6f56de89571fffc667280bb56 > >> # Parent 9d6e733046b9aa7e2ded8c4207625fedcc2a8c04 > >> # EXP-Topic filesetrev-func > >> # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ > >> # hg pull > >> https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r > >> 3e95bf7ed381 > >> fileset: add a 'status(...)' predicate to control evaluation context > > > > The series looks generally good, but I don't queue as the first half was > > originally written by me. Thanks for bringing my hack into production. > > > >> --- a/mercurial/fileset.py > >> +++ b/mercurial/fileset.py > >> @@ -463,6 +463,25 @@ def revs(mctx, x): > >> result.append(f) > >> return result > >> > >> +@predicate('status(base, rev, pattern)') > >> +def status(mctx, x): > >> + """``status(base, rev, revspec)`` > >> + > >> + Evaluate predicate using status change between ``base`` and > >> + ``rev``. Examples: > >> + > >> + - ``status(3, 7, added())`` - matches files added from "3" to "7" > >> + """ > >> + repo = mctx.ctx.repo() > >> + # i18n: "status" is a keyword > >> + b, r, x = getargs(x, 3, 3, _("status takes three arguments")) > >> + # i18n: "status" is a keyword > >> + baserevspec = getstring(b, _("first argument to revs must be a > >> revision")) > >> + revspec = getstring(r, _("second argument to revs must be a > >> revision")) > > > > s/revs/status/ > > Good catch, Do you want a V2 or a followup ?
I'm not the one who will queue this series, but perhaps this can be fixed in flight. > >> + basectx = scmutil.revsingle(repo, baserevspec) > >> + ctx = scmutil.revsingle(repo, revspec) > > > > Perhaps it's better to reject an empty revspec string. > > Revsingle natively refuse empty revset, (but we should add a test for it). I meant status('', '', pattern), not an empty result. > > And I slightly prefer picking the first rev for basectx just like > > revset.rangeset() would do. > > I do not really like the idea. It seems strange to me to have the same > revset interpreted as a differet revs when pased as 'base' or 'rev'. Okay, I don't have a strong opinion about this. But I note that it's the common behavior where revision pair is required. Try "hg status --rev : --rev :" for example. _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel