Mercurial > hg
view tests/testlib/wait-on-file @ 44802:e0414fcd35e0
rust-filepatterns: match exact `rootglob`s with a `HashSet`, not in the regex
This optimization yields some very interesting results in `rootglob`-heavy
repositories.
I build a test repository of the following structure:
```
root
/<uuid>/build/empty_file
... repeat for 4000 entries
```
and a `.hgignore` containing the corresponding 4000 `rootglob` entries pointing
to all `build/` folders.
Rust+c `hg status` goes from 350ms down to 110ms.
Differential Revision: https://phab.mercurial-scm.org/D8491
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 06 May 2020 11:17:27 +0200 |
parents | 23dd43d94f50 |
children | f727939f3513 |
line wrap: on
line source
#!/bin/bash # # wait up to TIMEOUT seconds until a WAIT_ON_FILE is created. # # In addition, this script can create CREATE_FILE once it is ready to wait. if [ $# -lt 2 ] || [ $# -gt 3 ]; then echo $# echo "USAGE: $0 TIMEOUT WAIT_ON_FILE [CREATE_FILE]" fi timer="$1" # if the test timeout have been extended, explicitly extend the provided timer if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then timer=$(( ( 100 * $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT )) fi wait_on="$2" create="" if [ $# -eq 3 ]; then create="$3" fi if [ -n "$create" ]; then touch "$create" create="" fi while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ]; do timer=$(( $timer - 1)) sleep 0.01 done if [ "$timer" -le 0 ]; then echo "file not created after $1 seconds: $wait_on" >&2 exit 1 fi