Mercurial > hg
view mercurial/stack.py @ 38853:3588e41f796d
shortest: cache disambiguation revset
This makes it actually useful. In compared the time in my hg repo with
69.6k revisions and with a disambiguation revset of "not public()"
that matches 563 visible revisions. I ran "time hg log -T
'{shortest(node1,)}' -r 0:1000" (no revisions within the revset in
that revision range). Before this patch, it took 57s and after it took
0.7s.
Differential Revision: https://phab.mercurial-scm.org/D4039
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 17 Apr 2018 11:16:59 -0700 |
parents | 68fcc5503ec5 |
children | 77c52ce50e6a |
line wrap: on
line source
# stack.py - Mercurial functions for stack definition # # Copyright Matt Mackall <mpm@selenic.com> and other # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import from . import ( revsetlang, scmutil, ) def getstack(repo, rev=None): """return a sorted smartrev of the stack containing either rev if it is not None or the current working directory parent. The stack will always contain all drafts changesets which are ancestors to the revision and are not merges. """ if rev is None: rev = '.' revspec = 'reverse(only(%s) and not public() and not ::merge())' revset = revsetlang.formatspec(revspec, rev) revisions = scmutil.revrange(repo, [revset]) revisions.sort() return revisions