Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 24 Sep 2015 17:52:21 -0700] rev 26410
unbundle: test and fix for clean abort on unknown bundle2 feature
This introduce a test for the feature and fix the exception name that is
different on default.
Matt Mackall <mpm@selenic.com> [Tue, 29 Sep 2015 14:33:31 -0500] rev 26409
merge with stable
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Sep 2015 21:57:08 +0900] rev 26408
localrepo: recreate phasecache if changelog was modified (issue4855)
Because _phaserevs and _phasesets cache revision numbers, they must be
invalidated if there are new commits or stripped revisions. We could do
that by calling _phasecache.invalidate(), but it wasn't simple to be
integrated with the filecache mechanism.
So for now, phasecache will be recreated after repo.invalidate() if
00changelog.i was modified before.
Augie Fackler <augie@google.com> [Sat, 26 Sep 2015 00:10:48 -0400] rev 26407
progress: force a repaint of a printed progress bar after a clear()
This avoids some visual flickering of the progress bar in convert and
probably some other operations. Previously, a line of output would
erase the progress bar, and then it would wait `progress.refresh`
seconds (default of 0.1) before redrawing the progress bar. Now if
we've ever painted a progress bar, we schedule the progress bar for
immediate repainting on the next progress call, which helps lend the
illusion that the progress bar is "always" there. In practice, it's
merely there more of the time, but it ends up being a lot easier to
read during convert.
Matt Mackall <mpm@selenic.com> [Tue, 29 Sep 2015 14:08:37 -0500] rev 26406
tests: fix test-bundle2-format output
Forgot to amend.
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Sep 2015 21:57:08 +0900] rev 26405
localrepo: recreate phasecache if changelog was modified (issue4855)
Because _phaserevs and _phasesets cache revision numbers, they must be
invalidated if there are new commits or stripped revisions. We could do
that by calling _phasecache.invalidate(), but it wasn't simple to be
integrated with the filecache mechanism.
So for now, phasecache will be recreated after repo.invalidate() if
00changelog.i was modified before.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 23 Sep 2015 12:56:12 -0700] rev 26404
bundle2: allow compressed bundle
This changeset adds support for a 'compression' parameter in bundle2 streams.
When set, it controls the compression algorithm used for the payload part of the
bundle2.
There is currently no usage of this except in tests.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Sep 2015 15:01:20 -0700] rev 26403
test-bundle2: dump bundle content using f --hexdump
Thanks to Greg Szorc for pointing this out.
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 22:54:46 -0400] rev 26402
treemanifest: rework lazy-copying code (issue4840)
The old lazy-copy code formed a chain of copied manifests with each
copy. Under typical operation, the stack never got more than a couple
of manifests deep and was fine. Under conditions like hgsubversion or
convert, the stack could get hundreds of manifests deep, and
eventually overflow the recursion limit for Python. I was able to
consistently reproduce this by converting an hgsubversion clone of
svn's history to treemanifests.
This may result in fewer manifests staying in memory during operations
like convert when treemanifests are in use, and should make those
operations faster since there will be significantly fewer noop
function calls going on.
A previous attempt (never mailed) of mine to fix this problem tried to
simply have all treemanifests only have a loadfunc - that caused
somewhat weird problems because the gettext() callable passed into
read() wasn't idempotent, so the easy solution is to have a loadfunc
and a copyfunc.
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 17:18:28 -0400] rev 26401
manifest: rename treemanifest load functions to ease debugging
I'm hunting an infinite recursion bug at the moment, and having both
of these methods named just _load is muddying the waters slightly.
Augie Fackler <augie@google.com> [Fri, 25 Sep 2015 17:17:36 -0400] rev 26400
manifest: add id(self) to treemanifest __repr__
Also rename __str__ to __repr__ since that's what we really want for
pdb.
Durham Goode <durham@fb.com> [Mon, 28 Sep 2015 10:27:36 -0700] rev 26399
bundlerepo: let bundle repo look in the _mancache
When looking up a base revision, we were ignoring the contents that were already
available in the manifest's _mancache. This patch allows us to use that data
instead of reading from the revlog.
This is useful in our pushrebase extension (which allows rebasing on the server
side during a push) because it allows us to prefetch the bundle base manifest
before aquiring the repo lock (1 second saving), which means doing less work inside the lock,
which means a 20% higher commit rate.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Sep 2015 22:19:54 +0900] rev 26398
check-seclevel: wrap entry point by function
This is intended to narrow scope of local variables. The global _verbose
flag will be replaced later by ui.verbose.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Sep 2015 22:16:24 +0900] rev 26397
check-seclevel: set executable bit as it has shebang
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 23 Sep 2015 12:56:05 -0700] rev 26396
bundle20: extract core payload generation in its own function
We are about to allow compressing the core of the bundle2. So we extract the
generation of this bits in its own parts to make this compression phases easier
in a later changesets.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 23 Sep 2015 14:00:16 -0700] rev 26395
unbundle20: allow registering handlers for stream level parameters
As a comment in the code have been asking for, it is now possible to register
piece of code that handle parameters for the stream. I've been wondering is such
function should be class methods or not. I eventually went for externally
decorated methods to stick with the culture of extensibility from an extensions
that apply to bundle2.