##// END OF EJS Templates
largefiles: don't rehash largefiles in updatelfiles if standin hash changed...
largefiles: don't rehash largefiles in updatelfiles if standin hash changed Standins are read before and after an update/merge, and all the standins that changes are handed to updatelfiles for getting their corresponding largefiles updated. updatelfiles would then hash the largefile and see if it already matched the new expected hash. If so, it would skip the update. If different, the largefile would be updated. It would happen very rarely that the largefile happened to match the new hash (and thus not the old one) and the hashing would thus be pointless ... and hashing is not cheap. Instead, when it is known that the standin hash changed (from an update), just update the standin unconditionally. If the largefile was "unsure" before the update, it was hashed at that point, so we know there is nothing to preserve. (Also, the hashing in updatelfiles was not used to preserve changes, but only to be lazy about updating the largefile, so nothing is lost by not doing this extra hashing.) There might be rare situations where we now will update largefiles that didn't have to be updated, but in all relevant cases (?) this will improve performance. Updates on a repo with some big largefiles has been seen to go from 9.19 s to 6.8 s - that is 26% less painful.

File last commit:

r22947:c63a09b6 default
r23893:f21a0d6d default
Show More
test-module-imports.t
41 lines | 1.6 KiB | text/troff | Tads3Lexer
/ tests / test-module-imports.t
Augie Fackler
test-module-imports: skip on Python < 2.6, since ast is new in 2.6
r20059 This code uses the ast module, which was new in 2.6, so we'll skip
this test on anything earlier.
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c 'import sys ; assert sys.version_info >= (2, 6)' || exit 80
Augie Fackler
test-module-imports: skip on Python < 2.6, since ast is new in 2.6
r20059
Augie Fackler
test-module-imports.t: new test to use the import cycle detector
r20039 $ import_checker="$TESTDIR"/../contrib/import-checker.py
Run the doctests from the import checker, and make sure
it's working correctly.
$ TERM=dumb
$ export TERM
$ python -m doctest $import_checker
$ cd "$TESTDIR"/..
$ if hg identify -q > /dev/null 2>&1; then :
> else
> echo "skipped: not a Mercurial working dir" >&2
> exit 80
> fi
There are a handful of cases here that require renaming a module so it
doesn't overlap with a stdlib module name. There are also some cycles
here that we should still endeavor to fix, and some cycles will be
hidden by deduplication algorithm in the cycle detector, so fixing
these may expose other cycles.
Simon Heimberg
tests: test-module-imports.t works on windows (with backslash path sep)...
r20395 $ hg locate 'mercurial/**.py' | sed 's-\\-/-g' | xargs python "$import_checker"
Mads Kiilerich
import-checker: show stdlib and relative imports separately...
r20386 mercurial/dispatch.py mixed imports
stdlib: commands
relative: error, extensions, fancyopts, hg, hook, util
mercurial/fileset.py mixed imports
stdlib: parser
relative: error, merge, util
mercurial/revset.py mixed imports
stdlib: parser
relative: discovery, error, hbisect, phases, util
mercurial/templater.py mixed imports
stdlib: parser
Durham Goode
template: add revset() template function...
r20519 relative: config, error, templatefilters, templatekw, util
Mads Kiilerich
import-checker: show stdlib and relative imports separately...
r20386 mercurial/ui.py mixed imports
stdlib: formatter
relative: config, error, scmutil, util
Augie Fackler
itersubrepos: move to scmutil to break a direct import cycle
r20392 Import cycle: mercurial.cmdutil -> mercurial.context -> mercurial.subrepo -> mercurial.cmdutil -> mercurial.cmdutil