- Dec 04, 2018
-
-
Matt Harbison authored
This goes with 47e3f554df35::d5622dfe4ba3. I'm not sure if it was really expected that there would be no wcache directory if neither execbit nor symlink is supported.
-
- Dec 03, 2018
-
-
Matt Harbison authored
This shows the tool path in the help, and changed in 67b180c0e263. uirepr() already does the same thing, but that undoes the mangling in its call to repr().
-
- Nov 28, 2018
-
-
Boris Feld authored
The script is dedicated to building a couple of repositories that should be interesting to run discovery from one another. It seems a common enough need to contribute it upstream.
-
- Dec 03, 2018
-
-
Pulkit Goyal authored
Differential Revision: https://phab.mercurial-scm.org/D5354
-
- Nov 18, 2018
-
-
Yuya Nishihara authored
This function will be used later for command-server logging.
-
Yuya Nishihara authored
This module isn't placed under the "utils" package since it needs "ui" to process things. It's called "loggingutil", not "logutil" because the word "log" is too obscure in our codebase.
-
Yuya Nishihara authored
This prepares for extracting utility function from the blackbox module.
-
- Nov 17, 2018
-
-
Yuya Nishihara authored
This is simpler and more robust. Before, an empty ".hg" directory would be created if it's removed after checking vfs.isdir('.').
-
- Nov 20, 2018
-
-
Yuya Nishihara authored
In blackbox, we don't want to create a ".hg" directory by mistake. This provides a race-safe option to achieve that.
-
- Nov 15, 2018
-
-
Boris Feld authored
This wvfs will allow us to migrate various cache to the new `wcache` directory. Helping with cache issues with "share".
-
Boris Feld authored
The cache directory will be needed very quickly, so it seems simpler to create it early to make sure it has the same owner and permission than the other directory in the repository.
-
Boris Feld authored
The cache directory will be needed very quickly, so it seems simpler to create it early to make sure it has the same owner and permission than the other directory in the repository.
-
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.
-