##// END OF EJS Templates
branchmap: avoid ancestor computations in absence of non-continous branches...
branchmap: avoid ancestor computations in absence of non-continous branches The branchhead computation is one of the more heavy operations for bigger repositories as it has to scan all changesets and potentially involves the expensive computation of the ancestor sets. Redo the computation to handle the common cases directly and use tighter conditions for when the ancestor scan is necessary. Most importantly, avoid it completely if the non-continous branches are processed in one update as seen in the initial computation after a clone. For the Mercurial repository, it gives a small 2-3% performance boost. For the NetBSD test repository, it cuts the time in half. Differential Revision: https://phab.mercurial-scm.org/D9631

File last commit:

r38982:f9a98075 default
r46872:f5d7df72 default
Show More
map-cmdline.bisect
15 lines | 864 B | text/plain | TextLexer
Jordi Gutiérrez Hermoso
map-cmdline.bisect: rewrite to just %include the default template...
r25007 %include map-cmdline.default
Yuya Nishihara
templater: load template fragments from [templates] section in map file...
r34715 [templates]
Yuya Nishihara
templates: rename "user" to "luser" defined in default map file (API)...
r38982 changeset = '{cset}{lbisect}{branches}{bookmarks}{tags}{parents}{luser}{ldate}{summary}\n'
Jordi Gutiérrez Hermoso
map-cmdline.bisect: rewrite to just %include the default template...
r25007 changeset_quiet = '{lshortbisect} {rev}:{node|short}\n'
Yuya Nishihara
templates: rename "user" to "luser" defined in default map file (API)...
r38982 changeset_verbose = '{cset}{lbisect}{branches}{bookmarks}{tags}{parents}{luser}{ldate}{lfiles}{lfile_copies_switch}{description}\n'
changeset_debug = '{fullcset}{lbisect}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{luser}{ldate}{lfile_mods}{lfile_adds}{lfile_dels}{lfile_copies_switch}{extras}{description}\n'
Jordi Gutiérrez Hermoso
map-cmdline.bisect: rewrite to just %include the default template...
r25007
# We take the zeroth word in order to omit "(implicit)" in the label
bisectlabel = ' bisect.{word('0', bisect)}'
lbisect ='{label("log.bisect{if(bisect, bisectlabel)}",
"bisect: {bisect}\n")}'
lshortbisect ='{label("log.bisect{if(bisect, bisectlabel)}",
"{bisect|shortbisect}")}'