liscju <piotr.listkiewicz@gmail.com> [Mon, 27 Jun 2016 10:33:33 +0200] rev 29420
largefiles: remove additional blank lines
It does not conform to the coding style.
liscju <piotr.listkiewicz@gmail.com> [Fri, 24 Jun 2016 09:08:16 +0200] rev 29419
largefiles: fix misleading comments in lfutil instore and storepath
Problem in both cases is cache in largefiles has assigned
meaning - user cache which is additional place to get/put
files. Those two function works on store - the main place
to store largefiles in the repository - .hg/largefiles and
using "cache" to describe it is misleading.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 19:10:46 -0700] rev 29418
revset: implement match() in terms of matchany()
match() is the special case of a single element list being passed
to matchany() with the additional error checking that the revset
spec is defined. Change the implementation to remove the redundant
code and have match() call matchany().
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 19:12:20 -0700] rev 29417
scmutil: improve documentation of revset APIs
I can never remember the differences between the various revset
APIs. I can never remember that scmutil.revrange() is the one I
want to use from user-facing commands.
Add some documentation to clarify this.
While we're here, the argument name for revrange() is changed to
"specs" because that's what it actually is.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 13:52:46 -0700] rev 29416
mdiff: remove use of __slots__
The use of __slots__ was added way back in 2006 in
4ec58b157265.
__slots__ isn't necessary for this class.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 17:40:53 -0700] rev 29415
i18n: use unicode literal
Other parts of this expression are already using unicode literals.
We need this to make Python 3 happy and to avoid an implicit
conversion in Python 2.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 17:22:06 -0700] rev 29414
pycompat: add HTTPPasswordMgrWithDefaultRealm to Python 3 block
Looks like we missed this in
800ec7c048b0.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 26 Jun 2016 07:59:02 -0700] rev 29413
ui: path option to declare which revisions to push by default
Now that we have a mechanism for declaring path sub-options, we can
start to pile on features!
Many power users have expressed frustration that bare `hg push`
attempts to push all local revisions to the remote. This patch
introduces the "pushrev" path sub-option to control which revisions
are pushed when no "-r" argument is specified.
The value of this sub-option is a revset, naturally.
A future feature addition could potentially introduce a "pushnames"
sub-options that declares the list of names (branches, bookmarks,
topics, etc) to push by default. The entire "what to push by default"
feature should probably be considered before this patch lands.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 18:35:14 -0700] rev 29412
ui: don't fixup [paths] sub-options
As part of developing a subsequent patch I discovered that sub-option
values like "." were getting converted to paths. This is because the
[paths] section is treated specially during config loading.
This patch prevents post-processing sub-options from the [paths]
section.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 07:26:43 -0700] rev 29411
sslutil: abort when unable to verify peer connection (BC)
Previously, when we connected to a server and were unable to verify
its certificate against a trusted certificate authority we would
issue a warning and continue to connect. This is obviously not
great behavior because the x509 certificate model is based upon
trust of specific CAs. Failure to enforce that trust erodes security.
This behavior was defined several years ago when Python did not
support loading the system trusted CA store (Python 2.7.9's
backports of Python 3's improvements to the "ssl" module enabled
this).
This commit changes behavior when connecting to abort if the peer
certificate can't be validated. With an empty/default Mercurial
configuration, the peer certificate can be validated if Python is
able to load the system trusted CA store. Environments able to load
the system trusted CA store include:
* Python 2.7.9+ on most platforms and installations
* Python 2.7 distributions with a modern ssl module (e.g. RHEL7's
patched 2.7.5 package)
* Python shipped on OS X
Environments unable to load the system trusted CA store include:
* Python 2.6
* Python 2.7 on many existing Linux installs (because they don't
ship 2.7.9+ or haven't backported modern ssl module)
* Python 2.7.9+ on some installs where Python is unable to locate
the system CA store (this is hopefully rare)
Users of these Pythongs will need to configure Mercurial to load the
system CA store using web.cacerts. This should ideally be performed
by packagers (by setting web.cacerts in the global/system hgrc file).
Where Mercurial packagers aren't setting this, the linked URL in the
new abort message can contain instructions for users.
In the future, we may want to add more code for finding the system
CA store. For example, many Linux distributions have the CA store
at well-known locations (such as /etc/ssl/certs/ca-certificates.crt
in the case of Ubuntu). This will enable CA loading to "just work"
on more Python configurations and will be best for our users since
they won't have to change anything after upgrading to a Mercurial
with this patch.
We may also want to consider distributing a trusted CA store with
Mercurial. Although we should think long and hard about that because
most systems have a global CA store and Mercurial should almost
certainly use the same store used by everything else on the system.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 07:32:02 -0700] rev 29410
sslutil: remove out of place comment
This comment likely got orphaned as a result of refactoring in this
file. It isn't providing any useful value. So delete it.
liscju <piotr.listkiewicz@gmail.com> [Fri, 24 Jun 2016 11:51:00 +0200] rev 29409
largefiles: remove additional blank line between methods in localstore
According to the coding style it should be a single blank line
between functions.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 12:37:09 -0700] rev 29408
revset: make head() honor order of subset
The ordering of 'x & head()' was broken in
6a1a4c212d50 (revset:
improve head revset performance, 2014-03-13). Presumably due to other
optimizations since then, undoing that change to fix the order does
not slow down the simple case of "hg log -r 'head()'" mentioned in
that commit. I see a small slowdown from ~0.16s to about ~0.19s with
'not 0 & head()', but I'd say it's worth it for the correct output.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 13:08:10 -0700] rev 29407
revsets: use itervalues() where only values are needed
I don't think there will be a noticeable speedup, but it removes an
unused variable.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 12:39:05 -0700] rev 29406
revsets: passing a set to baseset() is not wrong
Since
69c6e9623bdc (revset: force ascending order for baseset
initialized from a set, 2016-04-04), it is safe to pass a revset to a
baseset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 24 Jun 2016 02:04:43 +0200] rev 29405
pyflakes: use pycompat.pickles to prevent error
The pyflakes in my test box complain about pickle in pycompat.
mercurial/pycompat.py:17: 'pickle' imported but unused
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29404
rebase: move local variable 'obsoletenotrebased' to the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29403
rebase: move restorestestatus function to be a method of the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29402
rebase: move local variables related to keeping things unchanged to the RR
This commit moves the following variables, local to the rebase function to be
fields of the rebaseruntime:
-keepf
-keepbranchesf
-keepopen
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29401
rebase: move local variables 'date' and 'extrafns' to the RR class
This commit moves the following variables, local to the rebase function to be
fields of the rebaseruntime:
-date
-extrafns
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29400
rebase: move collapse-related local variables to the RR class
This commit moves the following variables local to the 'rebase' function
to be fields of the rebaseruntime class:
-collapsef
-collapsemsg
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 07:22:49 -0700] rev 29399
rebase: pass repo, ui and opts objects to the RR class constructor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Jun 2016 00:50:39 +0900] rev 29398
check-code: build translation table for repquote in global for efficiency
Rebuilding translation table (256 size) at each repquote() invocations
is redundant.
For example, this patch decreases user time of command invocation
below from 18.297s to 13.445s (about -27%) on a Linux box. This
command is main part of test-check-code.t.
hg locate | xargs python contrib/check-code.py --warnings --per-file=0
This patch adds "_repquote" prefix to functions and variables factored
out from repquote() to avoid conflict of name in the future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Jun 2016 00:50:39 +0900] rev 29397
check-code: detect "missing _() in ui message" more exactly
Before this patch, "missing _() in ui message" rule overlooks
translatable message, which starts with other than alphabet.
To detect "missing _() in ui message" more exactly, this patch
improves the regexp with assumptions below.
- sequence consisting of below might precede "translatable message"
in same string token
- formatting string, which starts with '%'
- escaped character, which starts with 'b' (as replacement of '\\'), or
- characters other than '%', 'b' and 'x' (as replacement of alphabet)
- any string tokens might precede a string token, which contains
"translatable message"
This patch builds an input file, which is used to examine "missing _()
in ui message" detection, before '"$check_code" stringjoin.py' in
test-contrib-check-code.t, because this reduces amount of change churn
in subsequent patch.
This patch also applies "()" instead of "_()" on messages below to
hide false-positives:
- messages for ui.debug() or debug commands/tools
- contrib/debugshell.py
- hgext/win32mbcs.py (ui.write() is used, though)
- mercurial/commands.py
- _debugchangegroup
- debugindex
- debuglocks
- debugrevlog
- debugrevspec
- debugtemplate
- untranslatable messages
- doc/gendoc.py (ReST specific text)
- hgext/hgk.py (permission string)
- hgext/keyword.py (text written into configuration file)
- mercurial/cmdutil.py (formatting strings for JSON)
Jun Wu <quark@fb.com> [Wed, 22 Jun 2016 21:30:49 +0100] rev 29396
revlog: add a fast path for "ambiguous identifier"
Before fd1bb7c, if the C index.partialmatch raises RevlogError, the Python
code raises "ambiguous identifier" error immediately, which is efficient.
fd1bb7c took hidden revisions into consideration and forced the slow path
enumerating the changelog to double-check hidden revisions. But it's not
necessary if we know the revlog has no hidden revisions.
This patch adds back the fast path for unfiltered revlogs.
Augie Fackler <raf@durin42.com> [Thu, 23 Jun 2016 20:45:37 -0400] rev 29395
import-checker: ensure cffi is always a system module
I've had reports that this is not always happening, so whitelist it
the way we whitelist other problem cases.
Martijn Pieters <mjpieters@fb.com> [Thu, 23 Jun 2016 18:21:25 +0100] rev 29394
atomictempfile: add context manager support
Close the file (moving it in place) on clean context exit, discard when there
has been an exception.
Martijn Pieters <mjpieters@fb.com> [Thu, 23 Jun 2016 18:20:58 +0100] rev 29393
atomictempfile: add read to the supported file operations
Martijn Pieters <mjpieters@fb.com> [Thu, 23 Jun 2016 18:18:33 +0100] rev 29392
atomictempfile: remove test ordering
These tests are independent and numbering only makes it harder to add more and
logically group them.
Martijn Pieters <mjpieters@fb.com> [Thu, 23 Jun 2016 17:35:43 +0100] rev 29391
atomictempfile: use a tempdir to keep the test environment clean
Rather than pre-emptively delete a file, execute the test in a dedicated
temporary directory that is removed after each test.