- Nov 15, 2018
-
-
Boris Feld authored
Some cache are relevant or affected by the working copy used. So the `.hg/cache` directory is not the best place for them because multiple shared repository can end up fighting over them. To address this issue, we introduce a new 'wcache' directory to host this kind of cache. The first user are the `checkisexec` type file. These files describe property of the working copy and fit the use-case well.
-
- Nov 23, 2018
-
-
Boris Feld authored
mmapping index is more efficient if we only need a small part of it. The 1MB value has been picked arbitrarily, a lower value might be better. On a large repository with a 60MB index, we see the following performance gain: hg perfindex before: ! wall 0.032023 comb 0.040000 user 0.000000 sys 0.040000 (best of 100) after: ! wall 0.000196 comb 0.000000 user 0.000000 sys 0.000000 (best of 1060) The speed boost benefit all cases, including the one where the full index needs to be parsed. hg perfindex --rev 0 before: ! wall 0.040673 comb 0.030000 user 0.000000 sys 0.030000 (best of 100) after ! wall 0.010713 comb 0.020000 user 0.010000 sys 0.010000 (best of 212) This gain reflect in higher level operation: hg perfbookmarks --clear-revlogs before: ! wall 0.161339 comb 0.160000 user 0.130000 sys 0.030000 (best of 56) after: ! wall 0.123228 comb 0.120000 user 0.120000 sys 0.000000 (best of 68)
-
Boris Feld authored
The option is useful and should be advertised more. We move it out of experimental as a first step. The `storage` section is selected as this is related to how the storage is accessed. A new 'performance' section might be more appropriate. We move from 'mmapindexthreshold` to `mmap-threshold` as non-index item are also suitable for mmap (eg: the rev-branch-cache). If relevant, we can introduce sub-option `mmap-threshold.revlog-index` later.
-
- Dec 01, 2018
-
-
Boris Feld authored
This allow for benchmarking the time necessary to look for other version than the tip.
-
- Nov 23, 2018
-
-
Boris Feld authored
The previous code was creating a revlog manually, we now use the actual `localrepo` method to create it. We have to jump though extra hops to work around the impact of filecache.
-
- Dec 02, 2018
-
-
Martin von Zweigbergk authored
It seems the regexes have been wrapped in an unnamed group since b6c42714d900 (Add locate command., 2005-07-05). In that commit, the grouping was needed because there was a "head" ('^') added before the group and a "tail" (os.sep) added after it. It seems the head was moved inside the group in 1c0c413cccdd (Get add and locate to use new repo and dirstate walk code., 2005-07-18) and the tail was moved inside the group in 89985a1b3427 (Clean up walk and changes code to use normalised names properly., 2005-07-31), So it seems to me that we've carried around the unnecessary group for 13 years. This patch removes it. Differential Revision: https://phab.mercurial-scm.org/D5352
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D5351
-
Martin von Zweigbergk authored
I think this is a little easier to follow and it will simplify later patches too. Differential Revision: https://phab.mercurial-scm.org/D5350
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D5349
-
- Nov 22, 2018
-
-
Boris Feld authored
This case of OverflowError (one single pattern being too large) has never been properly caught in the past.
-
Boris Feld authored
For hgignore with many globs, the resulting regexp might not fit under the 20K length limit. So the patterns need to be broken up in smaller pieces. Before this change, the logic was re-starting the full process from scratch for each smaller pieces, including the translation of globs into regexp. Effectively doing the work over and over. If the 20K limit is reached, we are likely in a case where there is many such glob, so exporting them is especially expensive and we should be careful not to do that work more than once. To work around this, we now translate glob to regexp once and for all. Then, we assemble the resulting individual regexp into valid blocks. This raises a very significant performance win for large `.hgignore file`: Before: ! wall 0.153153 comb 0.150000 user 0.150000 sys 0.000000 (median of 66) After: ! wall 0.059793 comb 0.060000 user 0.060000 sys 0.000000 (median of 100)
-
Boris Feld authored
-
Boris Feld authored
If a single pattern is too large to handle, we raise an exception. This case is now doctested.
-
Boris Feld authored
-
- Dec 02, 2018
-
-
Matt Harbison authored
I noticed this when playing with running tests using WSL, and iterating over the output yielded '0\r', '1\r',... Most of the other *.py tools do this, and `seq` on MSYS lacks '\r' in the output, so this is more consistent.
-
- Nov 23, 2018
-
-
Boris Feld authored
This flag will help to measure the time we spend loading various cache that support the branchmap update. Example for an 500 000 revisions repository: hg perfbranchmapupdate --base 'not tip' --target 'tip' ! wall 0.000860 comb 0.000000 user 0.000000 sys 0.000000 (best of 336) hg perfbranchmapupdate --base 'not tip' --target 'tip' --clear-caches ! wall 0.029494 comb 0.030000 user 0.030000 sys 0.000000 (best of 100)
-
- Nov 21, 2018
-
-
Boris Feld authored
If the --base set if a superset of one of the cached branchmap, we should use as a starting point. This greatly help the overall runtime of `hg perfbranchmapupdate` For example, for a repository with about 500 000 revisions, using this trick make the command runtime move from about 200 second to about 10 seconds. A 20x gain.
-
Boris Feld authored
Using 'repoview' matching the base and target subset make the benchmark more realistic. It also unlocks optimization to make the command initialization faster.
-
Boris Feld authored
This make the next patch easier to read.
-
Boris Feld authored
This command benchmark the time necessary to update the branchmap between two sets of revisions. This changeset introduce a first version, doing nothing fancy regarding cache or other internal details.
-
- Nov 05, 2018
-
-
Anton Shestakov authored
Pushing to a publishing server by mistake can lead to a difficult situation to solve because evolution doesn't work on public changesets. This new experimental config tries to help avoiding unintentionally (or at least being aware of) pushing to publishing remotes. `hg push --publish` can be used to make push succeed even when auto-publish is set to 'abort'.
-
- Nov 30, 2018
-
-
Pulkit Goyal authored
We call that few lines above and do nothing significant in between which can change the narrowpats. So let's use values returned by that call. Differential Revision: https://phab.mercurial-scm.org/D5348
-
- Nov 29, 2018
-
-
Augie Fackler authored
Yuya correctly spotted during the review of f27f8e9ef1e7 that we're dealing with hexlified hashes here, and so it should be 42 bytes not 22. Differential Revision: https://phab.mercurial-scm.org/D5347
-
- Nov 11, 2018
-
-
Yuya Nishihara authored
The blackboxlogger is unusable without a repo. Let's simply initialize it with a repo instance.
-
- Nov 17, 2018
-
-
Yuya Nishihara authored
The _repo will be a mandatory attribute. Instead, make the logger to not track any events.
-
- Nov 11, 2018
-
-
Yuya Nishihara authored
So the blackboxlogger can be instantiated with a repo.
-
Yuya Nishihara authored
This is the convention of the Mercurial API.
-
Yuya Nishihara authored
This makes sure that all logger instances will handle the message arguments properly.
-
Yuya Nishihara authored
Since the core ui.log() may recurse into ui.log() through ui.debug(), it must guard against recursion. The ui extension class can finally be removed.
-
- Nov 17, 2018
-
-
Yuya Nishihara authored
This prepares for the upcoming code move. The recursion guard will be ported to the core ui.
-
- Nov 28, 2018
-
-
Martin von Zweigbergk authored
Since 0f6a1bdf89fb (match: handle large regexes, 2007-08-19), we catch an OverflowError from the regex engine and split up the regex if that happens. In 59a9dc9562e2 (ignore: split up huge patterns, 2008-02-11), that was extended to raise an OverflowError in our code even if the regex engine doesn't raise it. It's unclear if there was a range of regex sizes where the OverflowError would be raised from the regex engine but that were still below the limit we added in our code. Either way, both limitations were probably removed in Python 2.7.4 when the regex code width was extended from 16bit to 32bit (or Py_UCS4) integer (thanks to Yuya for finding that out). If at least the first limitation was removed, we no longer should be using OverflowError for flow control, so this patch changes that. Differential Revision: https://phab.mercurial-scm.org/D5309
-
- Nov 27, 2018
-
-
Boris Feld authored
If we don't like a value we should print it.
-
- Oct 05, 2018
-
-
Pulkit Goyal authored
This patch drops the narrow bundle2 capabilities since we introduced narrow server capabilities which are more nice and now used everywhere. I am not sure what it can affect, so on safe side I marked this as BC. Also I removed the NARROWCAP constant as that kind of conflicts with the same name constant in wireprototypes.py. Differential Revision: https://phab.mercurial-scm.org/D4892
-
- Jul 02, 2017
-
-
Boris Feld authored
This will make it possible to apply it in more cases.
-
- Nov 22, 2018
-
-
Boris Feld authored
The origvfs has the auditor properly set and can move file without issue. The current code is currently working without errors because rename are not audited, yet.
-
Boris Feld authored
The subrepo's "revert" logic could benefit from it.
-
Boris Feld authored
They are the same kind of file, they are protected by the store lock, but directly lives inside the '.hg' directory. No warnings were ever raised about them because `vfs.rename` is not audited. Something we are trying to change.
-
Boris Feld authored
The command is meant to benchmark operations related to hgignore. Right now the command is benchmarking the loading time of the hgignore rules.
-
- Nov 26, 2018
-
-
Pulkit Goyal authored
xrange does not exists on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5302
-
- Nov 27, 2018
-
-
Pulkit Goyal authored
Differential Revision: https://phab.mercurial-scm.org/D5307
-