Mon, 18 May 2015 16:47:26 -0500 httpconnection: drop Python 2.4 specify hack
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:47:26 -0500] rev 25206
httpconnection: drop Python 2.4 specify hack Python 2.4.1 doesn't provide the full URI, good for it.
Mon, 18 May 2015 16:46:32 -0500 mail: drop explicit mail import required by Python 2.4
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:46:32 -0500] rev 25205
mail: drop explicit mail import required by Python 2.4 He's dead, Jim.
Mon, 18 May 2015 16:33:57 -0500 windows: drop Python2.4 specific hack for directory not found handling
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:33:57 -0500] rev 25204
windows: drop Python2.4 specific hack for directory not found handling A good Python 2.4 hack is a removed Python 2.4 hack.
Mon, 18 May 2015 16:24:16 -0500 notify: drop import required by Python 2.4
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:24:16 -0500] rev 25203
notify: drop import required by Python 2.4 Toto, I've a feeling we're not in anno 2004 anymore.
Mon, 18 May 2015 16:22:15 -0500 patchbomb: stop explicit import required by Python 2.4
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:22:15 -0500] rev 25202
patchbomb: stop explicit import required by Python 2.4 Ding Dong, the witch is dead!
Mon, 18 May 2015 16:20:12 -0500 pager: drop python 2.4 hack around subprocess
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:20:12 -0500] rev 25201
pager: drop python 2.4 hack around subprocess Farewell, we do not need you anymore.
Mon, 18 May 2015 16:18:18 -0500 check-code: drop ban of 'val if cond else otherval' construct
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:18:18 -0500] rev 25200
check-code: drop ban of 'val if cond else otherval' construct We now have access to this horrible but less bad than 'cond and val or otherval' syntax.
Mon, 18 May 2015 16:30:24 -0500 check-code: entirely drop the 'non-py24.py' file from the test
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:30:24 -0500] rev 25199
check-code: entirely drop the 'non-py24.py' file from the test There are no Python 2.4 related errors remaining.
Mon, 18 May 2015 16:11:44 -0500 check-code: drop the 'format' built-in
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:11:44 -0500] rev 25198
check-code: drop the 'format' built-in I'm not clear what it is doing, but one who knows what it is about can now make use of it.
Mon, 18 May 2015 16:09:05 -0500 check-code: drop ban of str.format
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:09:05 -0500] rev 25197
check-code: drop ban of str.format After discussion with Augie and Matt, we are fine with it being introduced in the code base.
Mon, 18 May 2015 22:40:16 -0400 statichttprepo: remove wrong getattr ladder
Augie Fackler <raf@durin42.com> [Mon, 18 May 2015 22:40:16 -0400] rev 25196
statichttprepo: remove wrong getattr ladder At least as far back as Python 2.6 the .code attribute is always defined, and to the best of my detective skills a .getcode() method has never been a thing.
Tue, 19 May 2015 07:17:57 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 19 May 2015 07:17:57 -0500] rev 25195
merge with stable
Sun, 17 May 2015 22:09:37 -0400 match: explicitly naming a subrepo implies always() for the submatcher stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 May 2015 22:09:37 -0400] rev 25194
match: explicitly naming a subrepo implies always() for the submatcher The files command supports naming directories to limit the output to children of that directory, and it also supports -S to force recursion into a subrepo. But previously, using -S and naming a subrepo caused nothing to be output. The reason was narrowmatcher() strips the current subrepo path off of each file, which would leave an empty list if only the subrepo was named. When matching on workingctx, dirstate.matches() would see the submatcher is not always(), so it returned the list of files in dmap for each file in the matcher- namely, an empty list. If a directory in a subrepo was named, the output was as expected, so this was inconsistent. The 'not anypats()' check is enforced by an existing test around line 140: $ hg remove -I 're:.*.txt' sub1 Without the check, this removed all of the files in the subrepo.
Sun, 17 May 2015 01:06:10 -0400 context: don't complain about a matcher's subrepo paths in changectx.walk() stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 May 2015 01:06:10 -0400] rev 25193
context: don't complain about a matcher's subrepo paths in changectx.walk() Previously, the first added test printed the following: $ hg files -S -r '.^' sub1/sub2/folder sub1/sub2/folder: no such file in rev 9bb10eebee29 sub1/sub2/folder: no such file in rev 9bb10eebee29 sub1/sub2/folder/test.txt One warning occured each time a subrepo was crossed into. The second test ensures that the matcher copy stays in place. Without the copy, the bad() function becomes an increasingly longer chain, and no message would be printed out for a file missing in the subrepo because the predicate would match in one of the replaced methods. Manifest doesn't know anything about subrepos, so it needs help ignoring subrepos when complaining about bad files.
Mon, 18 May 2015 22:35:27 -0500 ssh: capture output with bundle2 again (issue4642) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 22:35:27 -0500] rev 25192
ssh: capture output with bundle2 again (issue4642) I just discovered that we are not displaying ssh server output in real time anymore. So we can just fall back to the bundle2 output capture for now. This fix the race condition issue we where seeing in tests. Re-instating real time output for ssh would fix the issue too but lets get the test to pass first.
Fri, 24 Apr 2015 14:30:30 -0700 revset: optimize not public revset
Laurent Charignon <lcharignon@fb.com> [Fri, 24 Apr 2015 14:30:30 -0700] rev 25191
revset: optimize not public revset This patvh speeds up the computation of the not public() changeset and incidentally speed up the computation of divergents() changeset on our big repo by 100x from 50% to 0.5% of the time spent in smartlog with evolve. In this patch we optimize not public() to _notpublic() (new revset) and use the work on phaseset (from the previous commit) to be able to compute _notpublic() quickly. We use a non-lazy approach making the assumption the number of notpublic change will not be in the order of magnitude of the repo size. Adopting a lazy approach gives a speedup of 5x (vs 100x) only due to the overhead of the code for lazy generation.
Wed, 01 Apr 2015 11:17:17 -0700 phases: add set per phase in C phase computation
Laurent Charignon <lcharignon@fb.com> [Wed, 01 Apr 2015 11:17:17 -0700] rev 25190
phases: add set per phase in C phase computation To speed up the computation of draft(), secret(), divergent(), obsolete() and unstable() we need to have a fast way of getting the list of revisions that are in draft(), secret() or the union of both: not public(). This patch extends the work on phase computation in C and make the phase computation code also return a list of set for each non public phase. Using these sets we can quickly obtain all the revisions of a given phase. We do not return a set for the public phase as we expect it to be roughly the size of the repo. Also, it can be computed easily by substracting the entries in the non public phases from all the revs in the repo.
Fri, 08 May 2015 12:30:51 -0700 match: rename _fmap to _fileroots for clarity
Drew Gottlieb <drgott@google.com> [Fri, 08 May 2015 12:30:51 -0700] rev 25189
match: rename _fmap to _fileroots for clarity fmap isn't a very descriptive name for the set of the match's files.
Wed, 06 May 2015 15:59:35 -0700 match: remove unnecessary optimization where visitdir() returns 'all'
Drew Gottlieb <drgott@google.com> [Wed, 06 May 2015 15:59:35 -0700] rev 25188
match: remove unnecessary optimization where visitdir() returns 'all' Match's visitdir() was prematurely optimized to return 'all' in some cases, so that the caller would not have to call it for directories within the current directory. This change makes the visitdir system less flexible for future changes, such as making visitdir consider the match's include and exclude patterns. As a demonstration of this optimization not actually improving performance, I ran 'hg files -r . media' on the Mozilla repository, stored as treemanifest revlogs. With best of ten tries, the command took 1.07s both with and without the optimization, even though the optimization reduced the calls from visitdir() from 987 to 51.
Thu, 16 Apr 2015 17:12:33 -0400 dispatch: add support for python-flamegraph[0] profiling
Augie Fackler <augie@google.com> [Thu, 16 Apr 2015 17:12:33 -0400] rev 25187
dispatch: add support for python-flamegraph[0] profiling This gives us nicer svg flame graphs for output, which can make understanding some types of performance problems significantly easier. 0: https://github.com/evanhempel/python-flamegraph/
Tue, 28 Apr 2015 16:44:37 -0400 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com> [Tue, 28 Apr 2015 16:44:37 -0400] rev 25186
extensions: document that `testedwith = 'internal'` is special Extension authors (notably at companies using hg) have been cargo-culting the `testedwith = 'internal'` bit from hg's own extensions, which then defeats our "file bugs over here" logic in dispatch. Let's be more aggressive about trying to give extension authors a hint about what testedwith should say.
Fri, 10 Apr 2015 23:12:33 -0700 treemanifest: cache directory logs and manifests
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 23:12:33 -0700] rev 25185
treemanifest: cache directory logs and manifests Since manifests instances are cached on the manifest log instance, we can cache directory manifests by caching the directory manifest logs. The directory manifest log cache is a plain dict, so it never expires; we assume that we can keep all the directories in memory. The cache is kept on the root manifestlog, so access to directory manifest logs now has to go through the root manifest log. The caching will soon not be only an optimization. When we start lazily loading directory manifests, we need to make sure we don't create multiple instances of the log objects. The caching takes care of that problem.
Mon, 18 May 2015 15:40:23 -0500 hook: drop dedicated catch for 'KeyboardInterrupt'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:40:23 -0500] rev 25184
hook: drop dedicated catch for 'KeyboardInterrupt' This is no longer under 'Exception' in Python 2.6.
Mon, 18 May 2015 15:38:24 -0500 recover: catch any exception, not just Exception
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:38:24 -0500] rev 25183
recover: catch any exception, not just Exception We want recover to be rock solid.
Mon, 18 May 2015 15:33:21 -0500 exchange: catch down to BaseException when handling bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:33:21 -0500] rev 25182
exchange: catch down to BaseException when handling bundle2 We can now catch more things.
Mon, 18 May 2015 13:23:14 -0500 bundle2: use BaseException in bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:23:14 -0500] rev 25181
bundle2: use BaseException in bundle2 We can ensure we fail over properly in more cases.
Mon, 18 May 2015 13:20:19 -0500 check-code: drop ban of BaseException
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:20:19 -0500] rev 25180
check-code: drop ban of BaseException Lets go back to the basic. It is available in Python 2.6.
Mon, 18 May 2015 13:25:07 -0500 wireproto: turn an 'except' into a 'finally' as suggest by the comment
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:25:07 -0500] rev 25179
wireproto: turn an 'except' into a 'finally' as suggest by the comment Look! More hidden footprints!
Mon, 18 May 2015 12:56:59 -0500 check-code: drop the yield inside try/finally ban
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:56:59 -0500] rev 25178
check-code: drop the yield inside try/finally ban This is now possible with Python 2.6.
Mon, 18 May 2015 15:34:42 -0400 run-tests: resurrect the wifexited polyfill (backout 6ab5a1c9ea3c)
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 May 2015 15:34:42 -0400] rev 25177
run-tests: resurrect the wifexited polyfill (backout 6ab5a1c9ea3c) Python 2.7.3 on Windows doesn't have os.WIFEXITED, and the test output looked like this before I interrupted it. $ ./run-tests.py --local -j2 -t700 EEEEEEEEEEEEEEEEEEEEEE
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip