Yuya Nishihara <yuya@tcha.org> [Mon, 29 May 2017 21:57:51 +0900] rev 32537
encoding: make sure "wide" variable never be referenced from other modules
Better to not expose (maybe-) unicode objects.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 21:29:58 -0400] rev 32536
manifest: use itertools.chain() instead of + for Python 3 compat
This is all pure-Python code, so I'm not too worried about perf here,
but we can come back and fix it should it be a problem.
With this change, the manifest code passes most unit tests on Python 3
(once the tests are corrected with many b prefixes. I've got a little
more to sort out there and then I'll mail that change too.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 21:29:15 -0400] rev 32535
manifest: fix some pure-Python parser bits to work on Python 3
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 18:08:36 -0400] rev 32534
tests: make test-manifest finish importing in Python 3
The test is still broken, but now it executes.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 18:08:14 -0400] rev 32533
tests: drop assertIn polyfill now that we're 2.7-only
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 28 May 2017 11:13:10 -0700] rev 32532
perf: benchmark command for revlog indexes
We didn't have explicit microbenchmark coverage for loading revlog
indexes. That seems like a useful thing to have, so let's add it.
We currently measure the low-level nodemap APIs. There is room to
hook in at the actual revlog layer. This could be done as a follow-up.
The hackiest thing about this patch is specifying revlog paths.
Other commands have arguments that allow resolution of changelog,
manifest, and filelog. I needed to hook in at a lower level of
the revlog API than what the existing helper functions to resolve
revlogs allowed. I was too lazy to write some new APIs. This could
be done as a follow-up easily enough.
Example output for `hg perfrevlogindex 00changelog.i` on my
Firefox repo (404418 revisions):
! revlog constructor
! wall 0.003106 comb 0.000000 user 0.000000 sys 0.000000 (best of 912)
! read
! wall 0.003077 comb 0.000000 user 0.000000 sys 0.000000 (best of 924)
! create index object
! wall 0.000000 comb 0.000000 user 0.000000 sys 0.000000 (best of 1803994)
! retrieve index entry for rev 0
! wall 0.000193 comb 0.000000 user 0.000000 sys 0.000000 (best of 14037)
! look up missing node
! wall 0.003313 comb 0.000000 user 0.000000 sys 0.000000 (best of 865)
! look up node at rev 0
! wall 0.003295 comb 0.010000 user 0.010000 sys 0.000000 (best of 858)
! look up node at 1/4 len
! wall 0.002598 comb 0.010000 user 0.010000 sys 0.000000 (best of 1103)
! look up node at 1/2 len
! wall 0.001909 comb 0.000000 user 0.000000 sys 0.000000 (best of 1507)
! look up node at 3/4 len
! wall 0.001213 comb 0.000000 user 0.000000 sys 0.000000 (best of 2275)
! look up node at tip
! wall 0.000453 comb 0.000000 user 0.000000 sys 0.000000 (best of 5697)
! look up all nodes (forward)
! wall 0.094615 comb 0.100000 user 0.100000 sys 0.000000 (best of 100)
! look up all nodes (reverse)
! wall 0.045889 comb 0.050000 user 0.050000 sys 0.000000 (best of 100)
! retrieve all index entries (forward)
! wall 0.078398 comb 0.080000 user 0.060000 sys 0.020000 (best of 100)
! retrieve all index entries (reverse)
! wall 0.079376 comb 0.080000 user 0.070000 sys 0.010000 (best of 100)
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 28 May 2017 10:56:28 -0700] rev 32531
perf: rename perfrevlog to perfrevlogrevisions
We have a couple of commands beginning with "perfrevlog." The
actual "perfrevlog" command actually measures resolving the fulltext
of multiple revisions. So let's rename it to reflect what it actually
does.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:43:26 -0400] rev 32530
server: use pycompat to get argv
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 13:27:29 -0400] rev 32529
encoding: make wide character class list a sysstr
That's what east_asian_width returns, so just match it.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 14:02:14 -0400] rev 32528
cmdutil: use sorted(dict) instead of x = dict.keys(); x.sort()
The former both does less work and has the virtue of working on Python 3.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 16:17:43 -0400] rev 32527
util: look for empty-sysstr instead of empty-bytesstr in textwrap code
Fixes behavior on Python 3.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:47:43 -0400] rev 32526
minirst: look for column delimiters using slices instead of indicies
This works on both Python 2 and 3.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 13:36:02 -0400] rev 32525
minirst: grab a byte, not an int, for the underline style
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 13:41:42 -0400] rev 32524
minirst: use bytes.strip instead of str.strip
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 29 May 2017 16:21:15 +0530] rev 32523
py3: use pycompat.bytestr so that we don't get ascii values
This fixes `hg files 'set:(**.py)'` which makes test-check-py3-compat.t able to
run on Python 3. So if you now do `python3 ./run-tests.py
test-check-py3-compat`, the test will actually run.
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 29 May 2017 16:08:37 +0530] rev 32522
py3: update test-check-py3-compat.t
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:45:47 -0400] rev 32521
loader: pywatchman appears to already be py3 compatible
Our loader was doing some confusing things in pywatchman, but it looks
like we shouldn't be using it there anyway.
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 17:02:24 -0400] rev 32520
py3: update test expectations for py3-commands test
Jun Wu <quark@fb.com> [Thu, 25 May 2017 17:20:43 -0700] rev 32519
context: do not cache manifestctx
This will make sure when ctx.repo.manifestlog changes, a correct new
manifestctx is returned. repo.manifestlog takes care of caching so the
manifestctx won't be reconstructed every time.
Jun Wu <quark@fb.com> [Thu, 25 May 2017 17:06:32 -0700] rev 32518
test-context: add a case demonstrating manifest caching problem
This issue was discovered when testing absorb on Windows. What happens are:
1. ctx.p1().manifestctx gets cached.
let's call ctx.p1().manifestctx._revlog() "mrevlog1"
2. repo.manifestlog gets invalidated.
let's call repo.manifestlog._revlog "mrevlog2"
3. repo.commitctx(ctx)
commitctx uses ctx.p1().manifestctx and writes to "mrevlog1"
4. repo[n].manifest()
cannot find the manifest node in "mrevlog2"
This patch adds a test case to reproduce the issue.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 May 2017 16:50:46 +0200] rev 32517
debugbundle: display the content of obsmarkers parts
We parse and display the markers in the part when possible.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2017 11:50:43 -0700] rev 32516
bundle: add an experimental knob to include obsmarkers in bundle
The "hg bundle" command is a good place to test if the inclusion of obsmarkers
within a bundle is working well (part exists, content is correct etc). So we
add a way to have them included.
Ideally, this would be controlled by a change around bundlespec (bundlespec
"v3" + arguments). However, my main goal is to have obsmarkers included in
bundle created by the 'hg strip' command, not the 'hg bundle' so for now I'm
avoiding the detour through bundlespec rework territory.
Better debug output for obsmarkers in 'debugbundle' will be added in later
changesets. The 'test-obsolete-bundle-strip.t' test will also get updated in a
later changeset to keep the current changeset smaller.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2017 11:48:18 -0700] rev 32515
bundle2: move function building obsmarker-part in the bundle2 module
We move it next to similar part building functions. We will need it for the
"writenewbundle" logic. This will allow us to easily include obsmarkers in
on-disk bundle, a necessary step before having `hg strip` also operate on
markers.
(Yes, the bundle2 module was already too large, but there any many
interdependencies between its components so it is non-trivial to split, this is
a quest for another adventure.)
Yuya Nishihara <yuya@tcha.org> [Tue, 02 May 2017 21:45:48 +0900] rev 32514
policy: remove unused policynoc and policynocffi constants