evolvecmd: don't update working copy when using in-memory merge
This patch removes the update of the working copy after each in-memory merge and only does it for the last evolved commit. That means that there is little benefit in using in-memory for the last commit, so we use the on-disk merge for the last commit. There's still no significant speedup in the hg repo. It seems that the cost of updating the working copy is not large enough to make much difference, and the cost of reading and updating obsmarkers is relatively high in that repo. A significant part of the time (~35%) is spent in `repoview.computehidden()` because it is recalculated for every commit (seems like potential for improvement). I made similar changes in the mozilla-unified repo (which has a significantly larger working copy), by adding 10 commits each changing one line of a file. There, evolving 9 of those commits took 34s before this patch and 20s after. I measured similar speedups in an internal repo (9.0s -> 5.2s).
Status | Job ID | Name | Coverage | ||||||
---|---|---|---|---|---|---|---|---|---|
Test | |||||||||
passed |
#119830
|
checks-py2 |
00:01:01
|
|
|||||
passed |
#119831
|
checks-py3 |
00:01:20
|
|
|||||
passed |
#119836
|
doc |
00:00:21
|
|
|||||
manual |
#119829
allowed to fail
manual
|
pytype |
|
||||||
failed |
#119832
|
tests-py2-cext |
00:03:08
|
|
|||||
failed |
#119833
|
tests-py2-pure |
00:02:31
|
|
|||||
failed |
#119834
|
tests-py3-cext |
00:03:43
|
|
|||||
failed |
#119835
|
tests-py3-pure |
00:03:32
|
|
|||||
Name | Stage | Failure | ||
---|---|---|---|---|
failed
|
tests-py3-cext | Test | ||
|
||||
failed
|
tests-py3-pure | Test | ||
|
||||
failed
|
tests-py2-cext | Test | ||
|
||||
failed
|
tests-py2-pure | Test | ||
|