require: provide a link to a wiki page in addition of suggesting upgrade

The wiki page is intended to describe several solution to the requirement issue.
Some of those solutions does not involve upgrading mercurial. That is very
useful for people that can't easily upgrade they Mercurial in some place.

--HG--
extra : rebase_source : 308a39c9d3ddd77b009e27ee240aaa335b503ae6
revset: added __nonzero__ method to spanset class

Implemented it in a lazy way, just look for the first non-filtered revision
and return True if there's any revision at all.

--HG--
extra : rebase_source : 193301bd2f5ec2c78d7f10caac3791a9b033365b
extra : __touch-noise__ : 3531399549
tests: added tests to test sort revset

This tests are intended to test sort in many different cases where it could
fail when using the new structures

--HG--
extra : rebase_source : cf7a69fcc076920fcc695800377d9245985adc37
revset: fixed sorting issue with spanset

When a spanset was being sorted it didn't take into account it's current
state (ascending or descending) and it reversed itself everytime the reverse
parameter was True.

This is not yet used but it will be as soon as the sort revset is changed to
directly use the structures sort method.

--HG--
extra : rebase_source : 85ea19a104767ff16a890f236711f184d98ec773
revset: changed sort method to use native sort implementation of smartsets

When sort is done by revision or reversed revision number it can just call
sort on the set and doesn't have to iterate it all over again.

--HG--
extra : rebase_source : 94e03dc34440f08dc04da8a8485c4cd8835189fd
revset: added cached generated list to addset

This way when all the values have been generated the list can be sorted
without having to generate them all again.

--HG--
extra : rebase_source : bbbcdccd9070a18cc62f954827d595d3acd4b3cd
revset: changed _iterator() in addset to use the generated list when available

Now when all the elements have been generated, the iterator will just use the
generated list instead of going through all the elements again.

--HG--
extra : rebase_source : dd6ed49b5a050c49f1054ff1b0b3f910d13d0f41
revset: changed _iterator() method on addset to work with a given order

If the two collections are in ascending order, yield their values in an
ordered way by iterating both at the same time and picking the values to
yield.

--HG--
extra : rebase_source : 6454338cc0e4345d3bab6f7ef20c05d81c726a2d
extra : amend_source : 35d688e1e5608c4105d81e2da470174ed40de288
revset: added reverse method to addset

This method is needed to duck type generatorset.

--HG--
extra : rebase_source : 32a5f5d425921f3e9fc406bb595a929f814acecd
revset: added sort method in addset

We need this method to duck-type generatorset since this class is not going to
be used outside revset.py and we don't need to duck-type baseset.

This sort method will only do something when the addset is not already sorted
or is not sorted in the way we want it to be.

--HG--
extra : rebase_source : 5fd0274701754a17df9927a6dc255ba1760c6521
revset: added isascending and isdescending methods to smartset classes

This methods state if the class is sorted in an ascending or descending order

We need this to implement methods based on order on smartset classes in order
to be able to create new objects with a given order.

We cannot just rely on a simple boolean since unordered set are neither
ascending nor descending.

--HG--
extra : rebase_source : 3d83121f754c6c926b066537ff2e6026a0af62f9
revset: use more explicit argument names for baseset methods

Use other instead of x and condition instead of l
revset: added comments to all methods needed to duck-type from baseset

All this methods are required to duck-type for any class that works as a smart
set.

--HG--
extra : rebase_source : b31556e2fc354b48aa71cd3f4d23fa9a51afa8f1
extra : amend_source : 438943e0916388a467c2b0aff4ff5f612ec82ae9
revset: added filter method to _addset

This method is intended to duck-type baseset, so we will still have _addset
as a private class but we will be able return it without wrapping it into an
orderedlazyset or a lazyset.

--HG--
extra : rebase_source : 3671a47f700c9446219d5f4ffe38dd178cbb26fe
extra : amend_source : 8afbbb94a4cec89bb87a92321586cc501e60c978
revset: added ascending and descending methods to _addset

This methods are intended to duck-type baseset, so we will still have _addset
as a private class but will be able return it without wrapping it into an
orderedlazyset or a lazyset.

--HG--
extra : rebase_source : 85d792b4676974923adb2deb59f0b2696ba37a19
revset: added __and__ method to _addset

This method is intended to duck-type baseset, so we will still have _addset as a
private class but  we will be able to return it without wrapping it into an
orderedlazyset or a lazyset.

--HG--
extra : rebase_source : ee165606c35d0e55b3cdc82bdefb47d3e3a6274d
extra : amend_source : 6b0de9ed27a85cbcf49a3ec335dfa1fe7bc1f9a4
revset: added __sub__ mehtod to _addset

This method is intended to duck-type baseset, so we will still have _addset as a
private class but now will be able to return it without wrapping it into an
orderedlazyset or a lazyset.

--HG--
extra : rebase_source : 1241df4010b2f4b551c284c6b0df2f1c7d0a091d
revset: added __add__ method to _addset

This method is intended to duck-type baseset, so we will still have _addset as a
private class but we will be able to return it without wrapping it into an
orderedlazyset or a lazyset.

--HG--
extra : rebase_source : 40fdffabe7e1112911578a17c4f3b636b729584c
extra : amend_source : 92853a988333a0705977dd10bc267cebaaf4e593
revset: added isascending and isdescending methods to _addset

This methods are intended to duck-type baseset, so we will still have _addset
as a private class but now we can return it without wrapping it into an
orderedlazyset or a lazyset.

These were the last methods to add for smartset compatibility.

--HG--
extra : rebase_source : 54a71df2c18ce4d73f2d3cdf3bce65ab441acaa8
extra : amend_source : c3de6cd7c1175ca0454b7f73c2ce2887a6fdd426
revset: changed smartset methods to return ordered addsets

Now when adding two structures that are ordered, they are wrapped into an
_addset and they get added lazily while keeping the order.

--HG--
extra : rebase_source : 46154d3daaf8fe8ce098bdaf2781753ee397fce5
extra : amend_source : f2032addd94afcd919524fd0fa4ebf3c1997cc85