D451: revset: remove order information from tree

quark (Jun Wu) phabricator at mercurial-scm.org
Mon Aug 21 12:36:52 EDT 2017


quark added a comment.


  In https://phab.mercurial-scm.org/D451#7257, @yuja wrote:
  
  > We could change this policy so all predicates must "define" their own ordering
  >  schemes (as you did, I think), but I guess that would lead to bugs that are hardly
  >  noticed.
  
  
  I think the current way is easier to hide bugs if more revset's `defineorder` is not the default (ascending). For example, I think `p1(X+Y)` could be naturally parsed as `p1(X) + p1(Y)` so it is not equivalent to `p1(Y+X)`. But the current code relies heavily on default ascending order and could not implement that easily. (This series does not change `p1` behavior, it's just a possibility)
  
  My understanding about `anyorder` is, we can random-shuffle `anyorder` sets without affecting correctness - I had tried that approach and it did reveal issues (like "contains" does not respect "defineorder"). But I found https://phab.mercurial-scm.org/D456 to be a stronger test about ordering issues.
  
  > So I'm against to bring more "any" ordering without noticeable
  >  performance win. Can you measure it?
  
  Probably hard to measure. I think with the new suggested code pattern (either taking `subset` and `order`, or take none of them), it's harder to implement wrong.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D451

To: quark, #hg-reviewers
Cc: yuja, mercurial-devel


More information about the Mercurial-devel mailing list