[PATCH 3 of 3 gca-revset] revset: add a new commonancestorheads method

Yuya Nishihara yuya at tcha.org
Fri Jun 15 21:57:55 EDT 2018


On Fri, 15 Jun 2018 11:19:47 -0700, Sean Farley wrote:
> >> # HG changeset patch
> >> # User Sean Farley <sean at farley.io>
> >> # Date 1527357855 -7200
> >> #      Sat May 26 20:04:15 2018 +0200
> >> # Branch gca-revset
> >> # Node ID d44266127f1a86af521df2b2c088528c3f3b803a
> >> # Parent  ab29cfd39f48432d8e7c38cdceb62980d5c22f09
> >> revset: add a new commonancestorheads method

> >> +  $ hg log -r 'commonancestorheads(head())'
> >> +  changeset:   1:0f6b37dbe527
> >> +  user:        test
> >> +  date:        Thu Jan 01 00:00:00 1970 +0000
> >> +  summary:     1 first change f1
> >> +  
> >> +  changeset:   2:d1d156401c1b
> >> +  parent:      0:40494bf2444c
> >> +  user:        test
> >> +  date:        Thu Jan 01 00:00:00 1970 +0000
> >> +  summary:     2 first change f2
> >
> > Can you add a test for variable number (0, 1, 2...) of arguments? I think
> > that's likely to regress.
> 
> Ah, yeah, sure.
> 
> Further discussion: should introduce this new revset and deprecate the
> older one?

Deprecate which?

> Or would it be possible to optimize the heads(::x and ::y)
> syntax? Thoughts?

For trivial case where x and y are symbols, that's possible. But we can't
rewrite heads(::head()) to commonancestorheads(head()) since ::(x + y) means
any ancestors of x or y. That's why I said we would need new function anyway.

If we don't like the commonancestorheads() function, maybe we can add
commonancestors(x) and rewrite heads(commonancestors(x)) to
_commonancestorsheads(x).


More information about the Mercurial-devel mailing list