Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Apr 2015 14:16:50 -0700] rev 24616
repoview: use a heap in _getstatichidden
Since we want to process all non-public changesets from top to bottom, a heap
seems more appropriate. This will ensure any revision is processed after all
its children, opening the way to code simplification.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Apr 2015 13:58:12 -0700] rev 24615
repoview: update documentation of _getstatichidden
In 2f7cb6e6acdd, the function name, role and return was changed. But the
documentation was not. This fixes it.
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Apr 2015 14:56:18 +0900] rev 24614
ssl: resolve symlink before checking for Apple python executable (issue4588)
test-https.t was broken at 07fafcd4bc74 if /usr/bin/pythonX.Y is used on
Mac OS X.
If python executable is not named as "python", run-tests.py creates a symlink
and hghave uses it. On the other hand, the installed hg executable knows the
real path to the system Python. Therefore, there was an inconsistency that
hghave said it was not an Apple python but hg knew it was.
Augie Fackler <augie@google.com> [Fri, 03 Apr 2015 18:19:24 -0400] rev 24613
test-subrepo-recursion: fix output on non-hardlink systems
There's a slight bug present where a topic doesn't get closed when it should.
This isn't a regression, so I've made a note in the test file.
Augie Fackler <augie@google.com> [Fri, 03 Apr 2015 23:12:21 -0400] rev 24612
test-subrepo-recursion: set progress.changedelay really high
This avoids subtopics from showing up, which were introduced by my recent
change that added progress bars to hardlink clones in some cases.
Augie Fackler <augie@google.com> [Fri, 03 Apr 2015 18:10:12 -0400] rev 24611
test-clone: fix test expectations on systems without hardlinks
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:44:33 -0700] rev 24610
dirstate: use parsers.make_file_foldmap when available
This is a significant performance win on large repositories. perffilefoldmap:
On Linux/gcc, on a test repo with over 500,000 files:
before: wall 0.605021 comb 0.600000 user 0.560000 sys 0.040000 (best of 17)
after: wall 0.280530 comb 0.280000 user 0.250000 sys 0.030000 (best of 35)
On Mac OS X/clang, on a real-world repo with over 200,000 files:
before: wall 0.281103 comb 0.280000 user 0.260000 sys 0.020000 (best of 34)
after: wall 0.133622 comb 0.140000 user 0.120000 sys 0.020000 (best of 65)
This visibly impacts status times on case-insensitive file systems. On the Mac
OS X repo, status goes from 3.64 seconds to 3.50.
With the third-party hgwatchman extension [1], 'hg status' on the same repo
goes from 0.80 seconds to 0.65.
[1] https://bitbucket.org/facebook/hgwatchman
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:32:27 -0700] rev 24609
parsers: add a C function to create a file foldmap
This is a hot path on case-insensitive filesystems -- it's guaranteed to be
called every time 'hg status' is run.
This is significantly faster than the equivalent Python code: see the following
patch for numbers.
Siddharth Agarwal <sid0@fb.com> [Thu, 02 Apr 2015 19:17:32 -0700] rev 24608
util.h: define an enum for normcase specs
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
Siddharth Agarwal <sid0@fb.com> [Thu, 02 Apr 2015 19:13:50 -0700] rev 24607
perf: make measuring foldmap perf work again
Rev 25c1d3ca5ff6 split the foldmap into two, but I forgot to update perf for
the changes.
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:22:03 -0700] rev 24606
parsers._asciitransform: also accept a fallback function
This function will be used in upcoming patches to provide a C implementation of
the function to generate the foldmap.
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:38:56 -0700] rev 24605
util: add normcase spec and fallback
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
Andrew Shadura <andrew@shadura.me> [Fri, 03 Apr 2015 22:44:25 +0200] rev 24604
hgk: display committer name when set by hg-git
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 20:16:35 +0900] rev 24603
jsonchangeset: set manifest node to "null" for workingctx
Unlike changeset_printer, it does not hide the manifest field because JSON
output will be parsed by machine where explicit "null" will be more useful
than nothing.
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Mar 2015 20:15:40 +0900] rev 24602
jsonchangeset: set rev and node to "null" for workingctx
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Apr 2015 21:36:39 +0900] rev 24601
templater: tell hggettext to collect help of template functions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 10 Mar 2015 09:57:42 -0700] rev 24600
treemanifest: disable readdelta optimization
When tree manifests are stored with one revlog per directory and
loaded lazily, it's unclear how much readdelta will help. If only a
few files change, then only a small part of the full manifest will be
loaded, and the delta chains should also be shorter for tree
manifests. Therefore, let's disable readdelta for tree manifests for
now.
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Mar 2015 15:38:24 -0700] rev 24599
phases: make two functions private for phase computation
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:31:41 -0700] rev 24598
windows: define normcase spec and fallback
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:30:41 -0700] rev 24597
encoding.upper: factor out fallback code
This will be used as the fallback function on Windows.
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:29:22 -0700] rev 24596
cygwin: define normcase spec and fallback
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
The Cygwin normcase behavior is more complicated than just a simple lowercasing
or uppercasing. That's why we specify 'other'.
Siddharth Agarwal <sid0@fb.com> [Tue, 31 Mar 2015 23:30:19 -0700] rev 24595
darwin: define normcase spec and fallback
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:26:07 -0700] rev 24594
posix: define normcase spec and fallback
These will be used in upcoming patches to efficiently create a dirstate
foldmap.
Siddharth Agarwal <sid0@fb.com> [Wed, 01 Apr 2015 00:21:10 -0700] rev 24593
encoding: define an enum that specifies what normcase does to ASCII strings
For C code we don't want to pay the cost of calling into a Python function for
the common case of ASCII filenames. However, while on most POSIX platforms we
normalize filenames by lowercasing them, on Windows we uppercase them. We
define an enum here indicating the direction that filenames should be
normalized as. Some platforms (notably Cygwin) have more complicated
normalization behavior -- we add a case for that too.
In upcoming patches we'll also define a fallback function that is called if the
string has non-ASCII bytes.
This enum will be replicated in the C code to make foldmaps. There's
unfortunately no nice way to avoid that -- we can't have encoding import
parsers because of import cycles. One way might be to have parsers import
encoding, but accessing Python modules from C code is just awkward.
The name 'normcasespecs' was chosen to indicate that this is merely an integer
that specifies a behavior, not a function. The name was pluralized since in
upcoming patches we'll introduce 'normcasespec' which will be one of these
values.