Durham Goode <durham@fb.com> [Sun, 05 Mar 2017 16:20:07 -0800] rev 31216
dirstate: track updated files to improve write time
Previously, dirstate.write() would iterate over the entire dirstate to find any
entries that needed to be marked 'lookup' (i.e. if they have the same timestamp
as now). This was O(working copy) and slow in large repos. It was most visible
when rebasing or histediting multiple commits, since it gets executed once per
commit, even if the entire rebase/histedit is wrapped in a transaction.
The fix is to track which files have been editted, and only check those to see
if they need to be marked as 'lookup'. This saves 25% on histedit times in very
large repositories.
I tested this by adding temporary debug logic to verify that the old files
processed in the loop matched the new files processed in the loop and running
the test suite.
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:09:15 -0800] rev 31215
hook: give exthooks tags for blocking time
The ui.system autogenerated tag isn't really useful - as they're named, let's
use the name the user gave us.
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:19:40 -0800] rev 31214
filemerge: tag merge tool for blocked times
Merge tools can take a while - let's ensure that they're appropriately tagged
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:52 -0800] rev 31213
hgk: set a blocked tag when the user invokes view
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:41 -0800] rev 31212
transplant: set a blockedtag when invoking external filter
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:24 -0800] rev 31211
config: set blockedtag when invoking configuration edit
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:26:30 -0800] rev 31210
bisect: set a blockedtag when running the check command
So that the hg bisect data clearly shows the bisect command separately to the
main data set.
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:44 -0800] rev 31209
dispatch: set a blockedtag when running an external alias
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:29 -0800] rev 31208
patch: set a blockedtag when running an external filter
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:09 -0800] rev 31207
sshpeer: set a blockedtag when starting ssh
So that the data is readable.