Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 15:37:57 -0400] rev 33586
contrib: remove one test from the python 3 whitelist
439b4d005b4a introduced a use of 'hg revert --no-backup' which is
currently broken. Rather than try and do a fix on the (complicated)
revert code during the freeze, let's just give up on this test under
Python 3 until later. Once we do fix things, the test ratchet script
will re-enable it.
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 13:50:25 -0400] rev 33585
ui: fix configbytes isinstance check to look for bytes and not str
Fixes configbytes on Python 3.
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 14:42:55 -0400] rev 33584
patch: update copying of dict keys and values to work on Python 3
Alex Gaynor <agaynor@mozilla.com> [Fri, 21 Jul 2017 14:22:08 +0000] rev 33583
phabricator: include the suggested arc config in the repo
Test Plan:
I uploaded this revision with `arc diff`
Differential Revision: https://phab.mercurial-scm.org/D171
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Jul 2017 14:50:50 -0700] rev 33582
match: override visitdir() in nevermatcher to return False
When we changed basematcher.visitdir() in
cf15c3cc304c (match: make
base matcher return True for visitdir, 2017-07-14), we forgot to add
an override in nevermatcher. This led to tests failing in narrowhg.
As Durham pointed out, it's high time to add unit tests for the
matcher, so this patch also adds a first unit test.
Differential Revision: https://phab.mercurial-scm.org/D151
Steve Borho <steve@borho.org> [Fri, 21 Jul 2017 11:26:51 -0500] rev 33581
wix: update list of necessary pyd files
Jun Wu <quark@fb.com> [Fri, 21 Jul 2017 08:43:39 -0700] rev 33580
run-tests: pre instantiate pygments objects
This speeds up run-tests.py diff output by 10x, which affects developer
experience significantly. As demonstrated by the following test:
```
#require pygments
$ for i in `seq 1 200`; do
> echo ' $ echo '$i >> test-a.t
> echo ' wrong' >> test-a.t
> done
$ cat > walltime.py <<EOF
> from __future__ import absolute_import, print_function
> import os, sys, time
> t1 = time.time()
> os.system(' '.join(sys.argv[1:]) + ' >/dev/null 2>/dev/null')
> t2 = time.time()
> print('%0.2f' % (t2 - t1))
> EOF
$ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=never $TESTTMP/test-a.t
0.24
Before this patch:
$ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t
2.46
After this patch:
$ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t
0.25
```
Augie Fackler <augie@google.com> [Wed, 19 Jul 2017 13:44:22 -0400] rev 33579
contrib: drop Python 2.6 from manylinux1 wheel script
Augie Fackler <augie@google.com> [Wed, 19 Jul 2017 13:45:06 -0400] rev 33578
contrib: make build-linux-wheels.sh executable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Jul 2017 18:04:21 -0700] rev 33577
test-dirstate-race: hide irrelevant hg status output
See the explanation for more.
Differential Revision: https://phab.mercurial-scm.org/D153
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 20:34:22 -0400] rev 33576
test-commit: stabilize for filesystems without symlink support
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 19:49:51 -0400] rev 33575
test-https: properly conditionalize Windows vs non-Windows output
There's a bug in the (feature !) annotation, and this needs to be resolved
before fixing it. Once fixed, the glob '*/missing' will match the output
'/missing' on non-Windows platforms, consuming the output line and leaving
nothing for the no-windows required line.
I probably should have made (foo !) match only the 'foo' feature, and be ignored
otherwise instead of optional. (re) didn't work here, because the parenthesis
need to be escaped too.
Kevin Bullock <kbullock@ringworld.org> [Wed, 19 Jul 2017 07:58:03 -0500] rev 33574
Added signature for changeset
857876ebaed4
Kevin Bullock <kbullock@ringworld.org> [Wed, 19 Jul 2017 07:57:53 -0500] rev 33573
Added tag 4.3-rc for changeset
857876ebaed4
Kevin Bullock <kbullock+mercurial@ringworld.org> [Wed, 19 Jul 2017 07:51:41 -0500] rev 33572
merge default into stable for code freeze
Rishabh Madan <rishabhmadan96@gmail.com> [Tue, 18 Jul 2017 23:04:08 +0530] rev 33571
releasenotes: add custom admonitions support for release notes
By default, the extension has default sections like fix, feature, perf etc.. This
patch allow user to add support for custom admonition. In order to add a custom
admonition, one needs to have a .hgreleasenotes file inside the repository. All the
custom directive with name specified under the tag [sections] will be
usable by the extension. One important thing to keep in mind is if there exists any
custom admonitions with same key as default then they will override the default ones.
Ryan McElroy <rmcelroy@fb.com> [Tue, 18 Jul 2017 06:27:36 -0700] rev 33570
check-config: mention the file and line of the error
I used this to more quickly track down a failing test-check-config.t issue
in another repo. I thought it might be useful more generally, so I'm sending
it out in case others think it's a worthwhile change.
Durham Goode <durham@fb.com> [Tue, 18 Jul 2017 07:47:28 -0700] rev 33569
rebase: add config to move rebase into a single transaction
This was previously landed as
cf8ad0e6c0e4 but backed out in
a5abaa81fa because
it broke hook mid rebase and caused conflict resolution data loss in the event
of unexpected exceptions. This new version adds the behavior back but behind a
config flag, since the performance improvement is notable in large repositories.
The next patch adds a test covering this config.
The old commit message was:
Previously, rebasing would open several transaction over the course of rebasing
several commits. Opening a transaction can have notable overhead (like copying
the dirstate) which can add up when rebasing many commits.
This patch adds a single large transaction around the actual commit rebase
operation, with a catch for intervention which serializes the current state if
we need to drop back to the terminal for user intervention. Amazingly, almost
all the tests seem to pass.
On large repos with large working copies, this can speed up rebasing 7 commits
by 25%. I'd expect the percentage to be a bit larger for rebasing even more
commits.
There are minor test changes because we're rolling back the entire transaction
during unexpected exceptions instead of just stopping mid-rebase, so there's no
more backup bundle. It also leave an unknown file in the working copy, since our
clean up 'hg update' doesn't delete unknown files.
(grafted from
cca36c7f35261b0e31beb226bf361067ef0e06ab)
(grafted from
dc497d8705b71503e32e07bd33925c1e42cf9c9a)
Differential Revision: https://phab.mercurial-scm.org/D134
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:32:10 -0700] rev 33568
run-tests: remove unnecessary 'with_color' variable
Its value is always the same as that of 'pygmentspresent'.
Differential Revision: https://phab.mercurial-scm.org/D118
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:27:13 -0700] rev 33567
run-tests: warn if --color=always and no pygments installed
Differential Revision: https://phab.mercurial-scm.org/D117
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:28:42 -0700] rev 33566
run-tests: drop unnecessary check for pygmentspresent
2893face0af5 (run-tests: check if stream is a tty before using color,
2017-07-18) made the check redundant but forgot to remove it.
Differential Revision: https://phab.mercurial-scm.org/D116
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:15:15 -0700] rev 33565
run-tests: pass color option via test case object , not global var
At first I updated the color field of the 'options' object (from the
CLI parser), but then I decided to put it directly on the test case
object itself to avoid mutating the shared object (even though all
tests would have the same value).
Differential Revision: https://phab.mercurial-scm.org/D114
Jun Wu <quark@fb.com> [Mon, 10 Jul 2017 18:02:03 -0700] rev 33564
phabricator: sanity check Differential Revision from commit message
Previously, we trust Differential Revision in commit message blindly. This
patch adds sanity check so a host name change will be detected and the
commit message will be ignored.
Differential Revision: https://phab.mercurial-scm.org/D35
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 08:14:10 -0400] rev 33563
test-phases-exchange: properly conditionalize output
I forgot to invert the conditions, and the test runner didn't catch it[1]. But
since only '&&' is supported in the per-line feature tests, this won't work
anyway.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101941.html
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 18 Jul 2017 00:10:44 +0530] rev 33562
commitextras: mark the extension as ADVANCED
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Tue, 18 Jul 2017 07:19:26 +0900] rev 33561
run-tests: check if stream is a tty before using color
Previous implementation (
e80041832eec) checked only if sys.stderr was a tty
which was less general. Also makes sure that colors is never used if pygments is
not available, irrespective of --color flag value.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 21:44:29 -0700] rev 33560
tests: rewrite test-rebase-detach.t using drawdag
This makes it much clearer because each test case can have exactly the
graph it wants (no extra cruft just because other tests want it).
Differential Revision: https://phab.mercurial-scm.org/D94
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 23:09:17 -0700] rev 33559
tests: simplify config in test-rebase-detach.t
Differential Revision: https://phab.mercurial-scm.org/D93
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 22:32:58 -0700] rev 33558
drawdag: include files from both parents in merge commits
Consider a graph like this:
D
|\
B C
|/
A
drawdag will add a file called A in commit A, file B in B, file C in
C. That's fine and expected. In merge commits like D, I would expect
the files and their contents to be taken from the parent commits, so
commit D in this example would have files A, B, and C. However,
drawdag will instead add the file D compared to the first
parent. Depending on whether B or C got a smaller nodeid, the contents
of D would be {A, B, D} or {A, C, D}. This patch changes it to to be
{A, B, C}.
Differential Revision: https://phab.mercurial-scm.org/D92
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 15:54:15 -0700] rev 33557
gitweb: preserve whitespace in description
Without this, multiple spaces or tabs in the commit message aren't
preserved and things like tables don't align properly.
As part of adding the CSS rule, we had to cuddle the content
with the <div> to not introduce leading and trailing whitespace.
The "addbreaks" filter was also removed because it would insert
an additional newline, effectively double spacing content.
Differential Revision: https://phab.mercurial-scm.org/D113
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 11:45:38 -0700] rev 33556
sparse: add a requirement when a repository uses sparse (BC)
The presence of a sparse checkout can confuse legacy clients or
clients without sparse enabled for reasons that should be obvious.
This commit introduces a new repository requirement that tracks
whether sparse is enabled. The requirement is added when a sparse
config is activated and removed when the sparse config is reset.
The localrepository constructor has been taught to not open repos
with this requirement unless the sparse feature is enabled. It yields
a more actionable error message than what you would get if the
lockout were handled strictly at the requirements verification phase.
Old clients that aren't sparse aware will see the generic
"repository requires features unknown to this Mercurial" error,
however.
The new requirement has "exp" in its name to reflect the
experimental nature of sparse. There's a chance that the eventual
non-experimental feature won't change significantly and we could
have squatted on the "sparse" requirement without ill effect. If
that happens, we can teach new clients to still recognize the old
name. But I suspect we'll sneak in some BC and we'll want a new
requirement to convey new meaning.
Differential Revision: https://phab.mercurial-scm.org/D110
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 11:21:23 -0700] rev 33555
sparse: consolidate common code for writing sparse config
In 3 functions we were writing the sparse config and updating the
working directory. In two of them we had a transaction-like process
for restoring the sparse config in case of wdir update fail.
Because the pattern is common, we've already made mistakes, and the
complexity will increase in the near future, let's consolidate the
code into a reusable function.
As part of this refactor, we end up reading the "sparse" file twice
when updating it. This is a bit sub-optimal. But I don't think it
is worth the code complexity to pass around the variables to avoid
the redundancy.
Differential Revision: https://phab.mercurial-scm.org/D109
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 15:51:57 -0700] rev 33554
revset: pass repo when passing ui
The repo instance is currently only used to provide a changeset
lookup function as part of parsing revsets. I /think/ this allows
node fragments to resolve. I'm not sure why we wouldn't want this
to always "just work" if parsing a revset string.
Plus, an upcoming commit will introduce a new consumer that needs a
handle on the repo. So passing it more often will make that code
work more.
Passing a repo instance in all callers of revset.match* results in
a bunch of test changes. Notably, branch and tags caches get
populated as part of evaluating revsets. I'm not sure if this is
desirable. So this patch takes the conservative approach and only
passes the repo if we're passing a ui instance.
Differential Revision: https://phab.mercurial-scm.org/D97
Kevin Bullock <kbullock+mercurial@ringworld.org> [Mon, 17 Jul 2017 13:22:59 -0500] rev 33553
win32: copy-edit debugssl messages to match prevailing style
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 15 Jul 2017 02:17:05 +0530] rev 33552
run-tests: make sure to check if pygments is installed before using it
e80041832e introduced support to color the output of tests but used pygments
without checking whether it's installed or not. That breaks test-run-tests.t for
machines which don't have pygments installed. This patch conditionalize the
color test in test-run-tests.t and also add a check to make sure pygments is
installed before using that.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 13:21:23 -0700] rev 33551
sparse: require [section] in sparse config files (BC)
Previously, [include] was implicit and pattern lines before a
[section] were added to includes.
Because the format may change in the future and explicit behavior,
well, more explicit, this commit changes the config parser to
reject pattern lines that don't occur in a [section].
Differential Revision: https://phab.mercurial-scm.org/D96
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 13:07:57 -0700] rev 33550
sparse: use set for capturing profiles
Order doesn't need to be preserved. A set is acceptable.
Differential Revision: https://phab.mercurial-scm.org/D95
Alex Gaynor <agaynor@mozilla.com> [Mon, 17 Jul 2017 12:38:07 -0400] rev 33549
util: remove dead code which used to be for old python2 versions
Differential Revision: https://phab.mercurial-scm.org/D107
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 20:10:22 +0530] rev 33548
status: add a flag to terse the output (
issue4119)
This adds an experimental flag -t/--terse which will terse the output. The terse flag
will respect other flags which filters the output. The flag takes a string
whose value can be a subsequence of "marduic" (the order does not matter here.)
Ignored files are not considered while tersing unless -i flag is passed or 'i'
is there is the terse flag value.
The flag is experimental for testing as there may be cases which will produce
strange results with the flag. We can set the terse on by default by simply
passing 'u' to the cmdutil.tersestatus().
This patch also adds a test file with tests covering the new feature.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 12 Jul 2017 16:10:10 +0530] rev 33547
commitextras: check the format of the arguments and no internal key is used
This patch adds check to make the arguments are passed as KEY=VALUE and no key
which is used internally is passed.
This patch also adds test for the extension.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 12 Jul 2017 00:23:45 +0530] rev 33546
commitextras: move fb extension to core which add extras to a commit
This patch moves the Facebook extension to add extra fields to a commit to a
in-core extension.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Jul 2017 00:49:29 -0400] rev 33545
archive: add an experimental config to control the metadata file template
Experimental because given the possible complexity, it may be worth figuring out
how to load this from a file, similar to the style files for the log command,
instead of trying to stuff it on the command line.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Jul 2017 17:40:36 -0400] rev 33544
archive: use a templater to build the metadata file
There are no visible changes here.
I'm starting to wonder if adding the '+' to the 'node' line instead of a
separate key line in
3047167733dc was the right thing to do. The '{node}'
keyword never includes '+' elsewhere, and the way setup.py works, it would
truncate it anyway. Additionally, the file is missing '{p2node}' when 'wdir()'
merges are archived. I thought about adding an 'identify' line that would
correspond to `hg id -n`. But the other nodes are the full 40 characters, and
the output most useful for versioning is the short form. All of this cries out
for customization via templating. (Although maybe having the short identify
line by default is still a good idea.)
Jun Wu <quark@fb.com> [Sun, 16 Jul 2017 11:17:00 -0700] rev 33543
commandserver: do not handle EINTR for selector.select
selectors2 library handles EINTR transparently so we don't need to handle
select.error ourselves.
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:33:14 +0200] rev 33542
debugobsolete: also report the number of obsoleted changesets
This seems useful to have the number of obsoleted changesets when calling
debugobsolete.
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:20:06 +0200] rev 33541
transaction-summary: display the summary for all transactions
Now that we records "all" changes happening in a transaction (in tr.changes)
we will be able to provide better report on various changes (phases turned
public, changeset obsoleted, branch merged or created, etc..)
This is far too late in the cycle to play with this, but having this existing
method called more widely will help extensions to play around with various
options during the 4.4 cycle.
Instead of calling registersummarycallback only for transactions we want, we
always call it and use the transaction name to decide when to report (eg: we
do not want `hg amend` to report new obsoleted changesets). Filtering on
transaction name does not seems great, but seems good enough for the moment.
We can change the API during the next cycle.
The previous manual call during unbundling of the bundle2 "obsmarkers" part is
no longer necessary and has been dropped.
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:38:14 +0200] rev 33540
test-strip: fix call to super class in crashstriprepo
The 'self' argument is already taken care of by the 'super(...)' call. Instead
we were passing the repository instance as the 'desc' value.
This got discovered by breaking the next changeset.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:49:22 +0200] rev 33539
share: share 'cachevfs' with the source clone (
issue5108)
Share extension now also share caches reads and writes. Not sharing caches
results in costly caches recomputations which can takes up to minutes when
using shares on large repositories.
There are a couple of file in the '.hg/cache/' that depends of the current
visibility. Visibility can be affected by the working copy location, something
which is specific to each share. We ignores them for this series because they:
* are the minority,
* already have a good fallback to other precomputed caches,
* are only affected when people use the experimental evolution feature.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:05:15 +0200] rev 33538
cachevfs: add a devel warning for cache access though 'vfs'
This will help third party extensions to migrate to the new 'cachevfs'.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:30:25 +0200] rev 33537
cachevfs: migration the tags fnode cache to 'cachevfs'
This will help sharing the cache between shares.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:30:16 +0200] rev 33536
cachevfs: migrate tagscache to 'cachevfs'
This will help sharing the cache between shares.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:42:50 +0200] rev 33535
cachevfs: migration the revbranchcache to 'cachevfs'
This will help sharing the cache between shares.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:42:31 +0200] rev 33534
cachevfs: use the new vfs in when computing branchmap cache
This will help sharing the cache between shares.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:05:04 +0200] rev 33533
cachevfs: add a vfs dedicated to cache
Most of the cache content lives in '.hg/cache/'. Moreover they are computed
exclusively from data in the '.hg/store' directory. This creates issues with
the share extension as the '.hg/store' directory is shared but the '.hg/cache'
is not. On large repositories, this makes this prevent some usage of the share
extension inefficient as some caches can take minutes to be recomputed.
To improve the situation, we introduce a new 'cachevfs' that will be dedicated
to cache reading and writing. In the next patches of this series, we'll
migrate the 4 existing caches to it and update the share extension.
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:40:51 +0200] rev 33532
vfsward: register 'write with no lock' warnings as 'check-locks' config
Update 'write with no lock' warnings in order to be better controlled by the
config. We reuse the option used for lock order for these other lock related
message.
The message can now be disabled using 'devel.check-locks = no' (in addition to
the usual 'devel.all-warnings = no').
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:38:39 +0900] rev 33531
demandimport: prefer loaded module over package attribute (
issue5617)
In general, the attribute of the same name is overwritten by executing an
import statement.
import a.b
print(a.b.c) # 'c' of a/b/__init__.py
from a.b.c import d
print(a.b.c) # a/b/c.py
However, this appears not true for the scenario described in the test case,
and surprisingly, "from a.b.c import d" works even if "a.b.c" is not a module.
This patch works around the problem by taking the right module from sys.modules
if available.
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:19:22 +0900] rev 33530
demandimport: drop Py3 workarounds from Py2 implementation
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:16:32 +0900] rev 33529
demandimport: drop hack for old Pythons which had no level argument
_import() was added by
868282fa29d8, but it is identical to _origimport()
now.
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:47:10 +0900] rev 33528
tests: drop "absimport" conditionals which should be always true
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 14:17:35 +0200] rev 33527
color: drop the now useless color extension
all the extension features are provided by core since 4.2.