Boris Feld <boris.feld@octobus.net> [Fri, 22 Jun 2018 00:05:20 +0100] rev 38513
revlog: efficient implementation of 'descendant'
Iterating over descendants is costly, because there are no "parent -> children"
pointers. Walking the other way around is much more efficient, especially on
large repositories, where descendant walks can cost seconds. And the other hand,
common ancestors code follows links in the right direction and has a compiled
implementation.
In real life usage, this saved up to 80s during some pull operations, where
descendant test happens in extension code.
Boris Feld <boris.feld@octobus.net> [Thu, 21 Jun 2018 23:56:51 +0100] rev 38512
revlog: refactor out the rev-oriented part of commonancestorheads
We plan to use this in a function taking revs as argument. Round trips to nodes
seem silly.
Boris Feld <boris.feld@octobus.net> [Thu, 21 Jun 2018 23:53:43 +0100] rev 38511
revlog: do inclusive descendant testing (API)
In many other places, a revision is considered a descendant of itself. We
update the behavior of `revlog.descendant()` to match this. (for example.
`revlog.isancestor` does inclusive testing).
No tests break, so it seems safe to do so.
This will make it easier to use a more efficient implementation in a later
changeset.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 16:06:05 -0700] rev 38510
manifest: make cachesize a private attribute
AFAICT this isn't accessed outside the class. It is a private
attribute and its naming should reflect that.
Differential Revision: https://phab.mercurial-scm.org/D3868
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 15:51:04 -0700] rev 38509
repository: document that file() return value conforms to interface
Differential Revision: https://phab.mercurial-scm.org/D3867
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 21:40:55 +0900] rev 38508
cleanup: pass in overwrite flag to hg.updaterepo() as named argument
For clarity.