Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 22:20:03 +0900] rev 25253
parser: move prettyformat() function from revset module
I want to use it in doctests that I'll add by future patches. Also, it can
be used in "hg debugfileset" command.
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 19:50:42 +0900] rev 25252
fileset: move validation of incomplete parsing to parse() function
fileset.parse() should be responsible for all parsing errors as well.
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 19:42:47 +0900] rev 25251
revset: move validation of incomplete parsing to parse() function
revset.parse() should be responsible for all parsing errors. Perhaps it wasn't
because 'revset.parse' was not a real function when the validation code was
added at ffcb7e4d719f.
Drew Gottlieb <drgott@google.com> [Fri, 22 May 2015 14:39:34 -0700] rev 25250
match: fix bug in match.visitdir()
There was a bug in my recent change to visitdir (8545bd381504) due to
the stored generator being iterated over twice. Making the generator into a
list at the start fixes this.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 21 May 2015 16:20:34 -0400] rev 25249
error: derive RevlogError from HintException instead of Exception
This will allow us to now pass hints into this exception.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 21 May 2015 16:28:06 -0400] rev 25248
error: refactor common hint-pattern into a common base class
I'm about to make another exception class require hints, so third
strike and you refactor.
Matt Mackall <mpm@selenic.com> [Fri, 22 May 2015 11:50:57 -0500] rev 25247
merge with stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 22 May 2015 11:54:43 -0300] rev 25246
i18n-pt_BR: synchronized with 2664f536a97e
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 May 2015 11:29:45 -0500] rev 25245
util: allow to specify buffer size in popen4
We will need unbuffered IO to restore real time output with ssh peer.
Changeset ec171737aaf1 seems to indicate playing with this value could be
dangerous, but does not indicate why.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 23:19:11 -0500] rev 25244
sshpeer: extract the forward output logic
We are about to make a more aggressive use of this when reading and writing on
the other pipes. We it needs to be reusable.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 May 2015 12:33:12 -0500] rev 25243
sshpeer: break "OutOfBandError" feature for ssh (BC)
When we'll be using the ssh's 'stderr' for realtime output successfully, it will
no longer be possible to use 'stderr' to carry the error message (because it
is already consumed by the real time output logic.
This feature is very rarely used (test says largefile only) and I think
breaking its output pattern is worth the benefit of having real time output with
ssh.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 May 2015 18:17:40 -0500] rev 25242
error: allow a 'hint' to OutOfBandError
This will be useful when changing the behavior of OutOfBandError for ssh in the
next changeset.
Matt Mackall <mpm@selenic.com> [Thu, 21 May 2015 14:30:22 -0500] rev 25241
tests: fix test-clone on vfat
Martin von Zweigbergk <martinvonz@google.com> [Thu, 21 May 2015 11:34:40 -0700] rev 25240
wireproto: remove unused 'store' import
Durham Goode <durham@fb.com> [Sat, 16 May 2015 16:16:18 -0700] rev 25239
match: allow unioning arbitrary match functions
A future patch will be allowing nested matchers. To support that, let's refactor
_buildmatch to build a list of matchers then return True if any match.
We were already doing that for filesets + regex patterns, but this way will be
more generic.
Durham Goode <durham@fb.com> [Sat, 16 May 2015 16:12:00 -0700] rev 25238
match: add root to _buildmatch
A future patch will make _buildmatch able to expand relative include patterns.
Doing so will require knowing the root of the repo, so let's go ahead and pass
it in.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 21 May 2015 10:41:06 -0700] rev 25237
localrepo: extract stream clone application into reusable function
The existing stream_in method assumes a streaming clone is applied via
the wire protocol. Previous patches have enabled streaming clone data to
be produced and consumed outside the context of the wire protocol.
However, the consuming part was incomplete because it didn't deal with
things like updating the branch caches or writing out a requirements
file.
This patch finishes the separation of stream clone handling from the
wire protocol. After this patch, it is possible to consume stream clones
from arbitrary sources, including files. Mozilla plans to leverage this
to serve pre-generated stream clone files to consumers, drastically
reducing the wall and CPU time required to clone large repositories.
This will enable clones to be nearly as fast as `tar`.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 21 May 2015 10:27:45 -0700] rev 25236
exchange: move code for consuming streaming clone into exchange
For reasons outlined in the previous commit, we want to make the code
for consuming "stream bundles" reusable. This patch extracts the code
into a standalone function.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 21 May 2015 10:27:22 -0700] rev 25235
exchange: move code for generating a streaming clone into exchange
Streaming clones are fast because they are essentially tar files.
On mozilla-central, a streaming clone only consumes ~55s CPU time
on clients as opposed to ~340s CPU time for a regular clone or gzip
bundle unbundle.
Mozilla is deploying static file "lookaside" support to our Mercurial
server. Static bundles are pre-generated and uploaded to S3. When a
clone is performed, the static file is fetched, applied, and then an
incremental pull is performed. Unfortunately, on an ideal network
connection this still takes as much wall and CPU time as a regular
clone (although it does save significant server resources).
We like the client-side wall time wins of streaming clones. But we want
to leverage S3-based pre-generated files for serving the bulk of clone
data.
This patch moves the code for producing a "stream bundle" into its
own standalone function, away from the wire protocol. This will enable
stream bundle files to be produced outside the context of the wire
protocol.
A bikeshed on whether exchange is the best module for this function
might be warranted. I selected exchange instead of changegroup because
"stream bundles" aren't changegroups (yet).
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 10:13:43 -0700] rev 25234
dirstate: avoid match.files() in walk()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Oct 2014 22:47:22 -0700] rev 25233
match: introduce boolean prefix() method
tl;dr: This is another step towards a (previously unstated) goal of
eliminating match.files() in conditions.
There are four types of matchers:
* always: Matches everything, checked with always(), files() is empty
* exact: Matches exact set of files, checked with isexact(), files()
contains the files to match
* patterns: Matches more complex patterns, checked with anypats(),
files() contains roots of the matched patterns
* prefix: Matches simple 'path:' patterns as prefixes ('foo' matches
both 'foo' and 'foo/bar'), no single method to check, files()
contains the prefixes to match
For completeness, it would be nice to have a method for checking for
the "prefix" type of matcher as well, so let's add that, making it
return True simply when none of the others do.
The larger goal here is to eliminate uses of match.files() in
conditions (i.e. bool(match.files())). The reason for this is that
there are scenarios when you would like to create a "prefix" matcher
that happens to match no files. One example is for 'hg files -I foo
bar'. The narrowmatcher also restricts the set of files given and it
would not surprise me if have bugs caused by that already. Note that
'if m.files() and not m.anypats()' and similar is sometimes used to
catch the "exact" and "prefix" cases above.
Anton Shestakov <engored@ya.ru> [Thu, 21 May 2015 19:52:36 +0800] rev 25232
hgweb: descend empty directories in monoblue
The ability to "skip" a chain of empty directories in hgweb was added in
c21d236ca897, but monoblue style wasn't updated.
This block is copied from gitweb/map file and just works.
Drew Gottlieb <drgott@google.com> [Mon, 18 May 2015 14:29:20 -0700] rev 25231
match: have visitdir() consider includes and excludes
match.visitdir() used to only look at the match's primary pattern roots to
decide if a treemanifest traverser should descend into a particular directory.
This change logically makes visitdir also consider the match's include and
exclude pattern roots (if applicable) to make this decision.
This is especially important for situations like using narrowhg with multiple
treemanifest revlogs.
Anton Shestakov <engored@ya.ru> [Thu, 21 May 2015 00:27:12 +0800] rev 25230
hgweb: remove artificial width constraint from header in monoblue
This width property comes from the beginning of the monoblue theme itself, and
was used to stop the action header ("summary", "shortlog", "changelog", etc)
from clashing with the search form. But it still was happening (on smaller
screens, and with more actions added to hgweb over time).
Effectively, the hardcoded width was preventing the header from fitting into
the available screen space, since it always tried to be 900px wide, even if
that meant horizontal scroll on smaller screens and having the actions on two
lines where one should've been enough. For example,
http://selenic.com/hg/log?style=monoblue has the last two actions ("gz" and
"help") in the header on the second line, even when there seems to be enough
space on the first.
This patch makes the form float, which prevents it from overlaying/clashing
with the action header, and allows the latter to resize itself in the best
possible way.
Matt Mackall <mpm@selenic.com> [Wed, 20 May 2015 15:29:32 -0500] rev 25229
merge with stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 May 2015 22:42:47 -0400] rev 25228
files: recurse into subrepos automatically with an explicit path
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 20 May 2015 01:06:09 +0900] rev 25227
dirstate: use open/read of vfs(opener) explicitly instead of read
This simplifies changes in subsequent patch, which tries to open
`.pending` file when HG_PENDING environment variable is defined.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 20 May 2015 01:06:09 +0900] rev 25226
dirstate: use self._filename instead of immediate string `dirstate`
This prevents immediate string `dirstate` from multiplying. This is also
a preparation for making dirstate aware of PENDING mechanism in
subsequent patches.
Yuya Nishihara <yuya@tcha.org> [Tue, 19 May 2015 23:29:20 +0900] rev 25225
revset: drop translation marker from error message of _notpublic()
It is a kind of an internal error. End user won't see it.
Yuya Nishihara <yuya@tcha.org> [Tue, 19 May 2015 23:26:25 +0900] rev 25224
revset: drop docstring from internal _notpublic() function
It shouldn't be listed in "hg help revset".
Laurent Charignon <lcharignon@fb.com> [Wed, 13 May 2015 20:30:12 -0700] rev 25223
record: make hg record always use the non curses interface
Before this patch, hg record was running hg commit -i, therefore with the
experimental.crecord=True flag, hg record was actually launching the curses
record interface. Some of our users could be confused by that.
This patch makes the hg record command set this flag to False, ensuring that
hg record never shows the curses interface.
commit -i, shelve -i and revert -i remain unchanged and use the curses
interface if the experimental.crecord flag is set.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 09 Apr 2015 17:14:35 -0700] rev 25222
treemanifest: lazily load manifests
Most operations on treemanifests already visit only relevant
submanifests. Notable examples include __getitem__, __contains__,
walk/matches with matcher, diff. By making submanifests lazily loaded,
we speed up all these operations.
The lazy loading is achieved by adding a _load() method that gets
defined where we currently eagerly parse the manifest. We make sure to
call it before any access to _dirs, _files or _flags.
Some timings on the Mozilla repo (with flat manifest timings for
reference):
hg cat -r . README.txt: 1.644s -> 0.096s (0.255s)
hg diff -r .^ -r . : 1.746s -> 0.137s (0.431s)
hg files -r . python : 1.508s -> 0.146s (0.335s)
hg files -r . : 2.125s -> 2.203s (0.712s)