Gregory Szorc <gregory.szorc@gmail.com> [Mon, 08 May 2017 15:30:15 -0700] rev 32274
tests: remove test targeting Python 2.6
We just removed support for Python 2.7. This test is dead since it only
ran on <2.7.
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 02 May 2017 16:19:04 -0700] rev 32273
setup: drop support for Python 2.6 (BC)
Per discussion on the mailing list and elsewhere, we've decided that
Python 2.6 is too old to continue supporting. We keep accumulating
hacks/fixes/workarounds for 2.6 and this is taking time away from
more important work.
So with this patch, we officially drop support for Python 2.6 and
require Python 2.7 to run Mercurial.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 11:16:59 -0700] rev 32272
perf: move revlog construction and length calculation out of benchmark
We don't need to measure the time it takes to open the revlog or
calculate its length.
This is more consistent with what other perf* functions do.
While I was here, I also renamed the revlog variable from "r" to
"rl" - again in the name of consistency.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 11:15:56 -0700] rev 32271
perf: clear revlog caches on every iteration
cmdutil.openrevlog() may return a cached revlog instance. This /may/
be a recent "regression" due to refactoring of the manifest API. I'm
not sure.
Either way, this perf command was broken for at least manifests because
subsequent invocations of the perf function would get cache hits from
previous invocations, invalidating results. In the extreme case,
testing the last revision in the revlog resulted in near-instantanous
execution of subsequent runs (since the fulltext is cached). A time
of ~1us would be reported in this case.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 11:12:23 -0700] rev 32270
perf: don't convert rev to node before calling revlog.revision()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 12:12:53 -0700] rev 32269
revlog: rename _chunkraw to _getsegmentforrevs()
This completes our rename of internal revlog methods to
distinguish between low-level raw revlog data "segments" and
higher-level, per-revision "chunks."
perf.py has been updated to consult both names so it will work
against older Mercurial versions.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 12:02:31 -0700] rev 32268
perf: store reference to revlog._chunkraw in a local variable
To prepare for renaming revlog._chunkraw, we stuff a reference to this
metho in a local variable. This does 2 things. First, it moves the
attribute lookup outside of a loop, which more accurately measures
the time of the code being invoked. Second, it allows us to alias
to different methods depending on their presence (perf.py needs to
support running against old Mercurial versions).
Removing an attribute lookup from a tigh loop appears to shift the
numbers slightly with mozilla-central:
$ hg perfrevlogchunks -c
! read
! wall 0.354789 comb 0.340000 user 0.330000 sys 0.010000 (best of 28)
! wall 0.335932 comb 0.330000 user 0.290000 sys 0.040000 (best of 30)
! read w/ reused fd
! wall 0.342326 comb 0.340000 user 0.320000 sys 0.020000 (best of 29)
! wall 0.332857 comb 0.340000 user 0.290000 sys 0.050000 (best of 30)
! read batch
! wall 0.023623 comb 0.020000 user 0.000000 sys 0.020000 (best of 124)
! wall 0.023666 comb 0.020000 user 0.000000 sys 0.020000 (best of 125)
! read batch w/ reused fd
! wall 0.023828 comb 0.020000 user 0.000000 sys 0.020000 (best of 124)
! wall 0.023556 comb 0.020000 user 0.000000 sys 0.020000 (best of 126)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 12:02:12 -0700] rev 32267
revlog: rename internal functions containing "chunk" to use "segment"
Currently, "chunk" is overloaded in revlog terminology to mean
multiple things. One of them refers to a segment of raw data from
the revlog. This commit renames various methods only used within
revlog.py to have "segment" in their name instead of "chunk."
While I was here, I also made the names more descriptive. e.g.
"_loadchunk()" becomes "_readsegment()" because it actually does
I/O.
Jun Wu <quark@fb.com> [Sat, 06 May 2017 16:36:24 -0700] rev 32266
fsmonitor: do not nuke dirstate filecache
In the future, chg may prefill repo's dirstate filecache so it's valuable
and should be kept. Previously we drop both filecache and property cache for
dirstate during fsmonitor reposetup, this patch changes it to only drop
property cache but keep the filecache.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 11:01:02 -0700] rev 32265
perf: move gettimer() call
This is more consistent with other perf* functions.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 06 May 2017 10:59:38 -0700] rev 32264
perf: don't clobber startrev variable
Previously, the "startrev" argument would be ignored due to
"startrev = 0" in the benchmark function. This meant that
`hg perfrevlog` always started at revision 0.
Rename the local variable to "beginrev" so the variable does the
right thing.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 05 May 2017 17:31:15 +0200] rev 32263
bundle: add optional 'tagsfnodecache' data to on disk bundle (issue5543)
This should help performance when unbundling.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 05 May 2017 17:28:52 +0200] rev 32262
bundle2: move tagsfnodecache generation in a generic function
This will help us reusing the logic for `hg bundle`.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 05 May 2017 17:09:47 +0200] rev 32261
bundle: introduce an higher level function to write bundle on disk
The current function ('writebundle') is focussing on getting an existing
changegroup to disk. It is no easy ways to includes more part in the generated
bundle2. So we introduce a slightly higher level function that is fed the
'outgoing' object (that defines the bundled spec) and the bundlespec parameters
(to control the changegroup generation and inclusion of other parts).
This is creating the third logic dedicated to create a consistent bundle2 (the
other 2 are the push code and the getbundle code). We should probably reconcile
them at some points but they all takes different types of input. So we need to
introduce an intermediate "object" that each different input could be converted
to. Such unified "bundle2 specification" could be fed to some unified code.
We start by having the `hg bundle` related code on its own to helps defines its
specific needs first. Once the common and specific parts of each logic will be
known we can start unification.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 04 May 2017 21:47:03 +0200] rev 32260
bundle: handle compression earlier
We can also handle that part before starting any generation.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 04 May 2017 21:46:02 +0200] rev 32259
bundle: check changegroup version earlier
We can check if we know how to bundle this changegroup version before actually
starting to generate the changegroup.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 04 May 2017 21:44:36 +0200] rev 32258
bundle: check lack of revs to bundle before generating the changegroup
We already have the information so we can check it earlier.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 May 2017 23:00:57 -0400] rev 32257
extdiff: copy back files to the working directory if the size changed
In theory, it should be enough to pay attention only to the modification time
when detecting if a snapshotted working directory file changed. In practice,
BeyondCompare preserves all file attributes when syncing files at the directory
level. (If you open the file and sync individual hunks, then mtime does change,
and everything was being copied back as desired.) I'm not sure how many other
synchronization tools would trigger this issue, but it's annoyingly inconsistent
(if a single file is diffed, it isn't snapshotted, so the same BeyondCompare
file sync operation _is_ visible, because wdir() is updated in place.
I filed a bug with them, and they stated it is on their wish list, but won't be
fixed in the near term. This isn't a complete fix (there is still the case of
the size not changing), but this seems like a trivial enough change to fix most
of the problem. I suppose we could fool around with making files in the other
snapshot readonly, and copy back if we see the readonly bit copied. That seems
pretty hacky though, and only works if the external tool copies all attributes.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 May 2017 22:48:06 -0400] rev 32256
test-extdiff: enable a previously failing test on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 May 2017 19:11:59 -0400] rev 32255
test-extdiff: narrow the range of an '#if execbit' block
Now that output can be conditionalized, the few `chmod +x` specific outputs can
be conditionalized, and the rest of the tests run as normal. Disable one test
that is failing on Windows for now.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 May 2017 14:36:26 -0400] rev 32254
test-extdiff: deduplicate tests
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 May 2017 13:37:00 -0400] rev 32253
test-extdiff: fill in a missing Windows test
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 17:21:58 +0900] rev 32252
policy: eliminate ".pure." from module name only if marked as dual
So we can switch cext/pure modules to new layout one by one.
Yuya Nishihara <yuya@tcha.org> [Fri, 12 Aug 2016 11:06:14 +0900] rev 32251
policy: add "cext" package which will host CPython extension modules
I'm going to restructure cext/pure modules and get rid of our hgimporter
hack. C extension modules will be moved to cext/ directory so old and new
compiled modules can coexist in development tree. This is necessary to
run 'hg bisect' without recompiling.
New extension modules will be loaded by an importer function:
base85 = policy.importmod('base85') # select pure.base85 or cext.base85
This will also allow us to split cffi from pure modules, which is currently
difficult because pure modules can't be imported by name.