Durham Goode <durham@fb.com> [Sat, 16 May 2015 16:06:22 -0700] rev 25216
ignore: use 'include:' rules instead of custom syntax
Now that the matcher supports 'include:' rules, let's change the dirstate.ignore
creation to just create a matcher with a bunch of includes. This allows us to
completely delete ignore.py.
I moved some of the syntax documentation over to readpatternfile in match.py so
we don't lose it.
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:56:52 -0700] rev 25215
match: add 'include:' syntax
This allows the matcher to understand 'include:path/to/file' style rules. The
files support the standard hgignore syntax and any rules read from the file are
included in the matcher without regard to the files location in the repository
(i.e. if the included file is in somedir/otherdir, all of it's rules will still
apply to the entire repository).
Durham Goode <durham@fb.com> [Mon, 18 May 2015 16:27:56 -0700] rev 25214
match: add optional warn argument
Occasionally the matcher will want to print warning messages instead of throwing
exceptions (like if it encounters a bad syntax parameter when parsing files).
Let's add an optional warn argument that can provide this. The next patch will
actually use this argument.
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:51:03 -0700] rev 25213
match: add source to kindpats list
Future patches will be adding the ability to recursively include pattern files
in a match rule expression. Part of that behavior will require tracking which
file each pattern came from so we can report errors correctly.
Let's add a 'source' arg to the kindpats list to track this. Initially it will
only be populated by listfile rules.
Matt Mackall <mpm@selenic.com> [Tue, 19 May 2015 08:41:04 -0500] rev 25212
check-code: reintroduce str.format() ban for 3.x porting
In their infinite wisdom, the Python maintainers stripped bytes of its
% and format() methods for 3.x. They've now added % back to 3.5, but
format() is still missing. Since we don't have any particular need for
it, we should keep avoiding it.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 23:43:36 -0500] rev 25211
util: drop the 'unpacker' helper
It is not helping anything anymore.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:56:04 -0500] rev 25210
MBTextWrapper: drop dedicated __init__ method
It was only there as a compatibility layer with a version of Python which we do
support anymore.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:54:21 -0500] rev 25209
util: drop the compatibility with Python 2.4 unpacker
Python 2.4 compatibility have packed and sailed.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:52:28 -0500] rev 25208
tests: just use 'response.reason'
There is no reason to not have simple code now that Python 2.4 is dead.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:51:02 -0500] rev 25207
url: drop awful hack around bug in Python 2.4
It's all just a memory now.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
Matt Mackall <mpm@selenic.com> [Tue, 19 May 2015 07:17:57 -0500] rev 25195
merge with 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.
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.
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.
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.
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.
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.
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.
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/