liscju <piotr.listkiewicz@gmail.com> [Sat, 07 May 2016 19:59:30 +0200] rev 29122
import-checker: recognize relative imports from parents of current package
So far fromlocal recognizes relative imports of the form:
from . import D
from .. import E
It wasn't prepared for recognizing relative imports like:
from ..F import G
The bug was not found so far because all relative imports starting
from the parent was in the list of allowsymbolicimports like:
from ..i18n import
from ..node import
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 06 May 2016 21:44:41 +0530] rev 29121
py3: make hgext/fetch.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 06 May 2016 21:41:25 +0530] rev 29120
tests: test-check-py3-compat.t output updated
The test output was not updated as the lower section of the test updates
with python3.5, so it might be the case that people have updated the modules
but the test was left as it was. So this patch updates the test output.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 May 2016 12:09:00 +0900] rev 29119
revset: factor out public optimize() function from recursion
New optimize() hides internal arguments and return values. This makes it easy
to add more parameters and return values to _optimize().
Yuya Nishihara <yuya@tcha.org> [Mon, 02 May 2016 12:47:09 +0900] rev 29118
revset: introduce temporary variables in optimize() where they look better
Yuya Nishihara <yuya@tcha.org> [Mon, 02 May 2016 11:50:48 +0900] rev 29117
revset: construct arguments of only() against matched tree
Since _isonly() knows the structure of 'revs' and 'bases', it should be
slightly easier to understand than destructuring 'ta' and 'tb'.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 May 2016 11:27:26 +0900] rev 29116
revset: unnest isonly() closure from optimize()
There were no variables to be captured.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:46:31 -0700] rev 29115
sslutil: stop checking for web.cacerts=! (BC)
The previous patch stopped setting web.cacerts=! to indicate
--insecure.
That left user configs as the only source that could introduce
web.cacerts=!.
The practical impact of this patch is we no longer honor
web.cacerts=! in configs. Instead, we always treat web.cacerts
as a path. The patch is therefore technically BC. However,
since I don't believe web.cacerts=! is documented, it should be
safe to remove.
a939f08fae9c (which introduced --insecure) has
no indication that web.cacerts=! is anything but an implementation
detail, reinforcing my belief it can be removed without major
debate.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:40:01 -0700] rev 29114
dispatch: stop setting web.cacerts=! to indicate --insecure
Consumers needing to know if --insecure was used have already
transitioned to using ui.insecureconnections. The previous
patch removed the last meaningful consumer looking for
web.cacerts=!.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:38:18 -0700] rev 29113
sslutil: use CA loaded state to drive validation logic
Until now, sslkwargs may set web.cacerts=! to indicate
that system certs could not be found. This is really
obtuse because sslkwargs effectively sets state on a global
object which bypasses wrapsocket() and is later consulted
by validator.__call__. This is madness.
This patch introduces an attribute on the wrapped socket
instance indicating whether system CAs were loaded. We
can set this directly inside wrapsocket() because that
function knows everything that sslkwargs() does - and more.
With this attribute set on the socket, we refactor
validator.__call__ to use it.
Since we no longer have a need for setting web.cacerts=!
in sslkwargs, we remove that.
I think the new logic is much easier to understand and will
enable behavior to be changed more easily.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:37:28 -0700] rev 29112
sslutil: handle ui.insecureconnections in validator
Right now, web.cacerts=! means one of two things:
1) Use of --insecure
2) No CAs could be found and were loaded (see sslkwargs)
This isn't very obvious and makes changing behavior of these
different scenarios independent of the other impossible.
This patch changes the validator code to explicit handle the
case of --insecure being used.
As the inline comment indicates, there is room to possibly change
messaging and logic here. For now, we are backwards compatible.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:35:45 -0700] rev 29111
sslutil: check for ui.insecureconnections in sslkwargs
The end result of this function is the same. We now have a more
explicit return branch.
We still keep the old code looking at web.cacerts=! a few lines
below because we're still setting web.cacerts=! and need to react
to the variable. This will be removed in an upcoming patch.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:34:22 -0700] rev 29110
dispatch: set ui.insecureconnections when --insecure is used
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:33:38 -0700] rev 29109
ui: add an instance flag to hold --insecure bit
Currently, when --insecure is used we set web.cacerts=! and
socket validation takes this value into account. web.cacerts=!
is not documented AFAICT and is purely an internal implementation
detail.
Let's be more explicit about what is going on by introducing a
dedicated variable outside of the config values to track that
--insecure is used.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:32:43 -0700] rev 29108
sslutil: make sslkwargs code even more explicit
The ways in which this code can interact with socket wrapping
and validation later are mind numbing. This patch helps make it
even more clear.
The end behavior should be identical.
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 04 May 2016 23:38:34 -0700] rev 29107
sslutil: move code examining _canloaddefaultcerts out of _defaultcacerts
Before, the return of _defaultcacerts() was 1 of 3 types. This was
difficult to read. Make it return a path or None.
We had to update hghave.py in the same patch because it was also
looking at this internal function. I wasted dozens of minutes
trying to figure out why tests were failing until I found the
code in hghave.py...
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 04 May 2016 23:01:49 -0700] rev 29106
sslutil: further refactor sslkwargs
The logic here and what happens with web.cacerts is mind numbing.
Make the code even more explicit.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 05 May 2016 00:31:11 -0700] rev 29105
sslutil: document and slightly refactor sslkwargs
This will help me and any reviewers keep sane as this code
is refactored.
Augie Fackler <augie@google.com> [Fri, 06 May 2016 11:31:29 -0400] rev 29104
localrepo: remove a couple of local type aliases
The local aliases are unused now, and were confusing mypy's type
checker.
Augie Fackler <augie@google.com> [Fri, 06 May 2016 14:22:17 -0400] rev 29103
cmdutil: typo fix in comment
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 May 2016 21:14:12 -0400] rev 29102
tests: add globs for Windows
Jun Wu <quark@fb.com> [Sat, 07 May 2016 14:51:32 +0100] rev 29101
chgserver: add [alias] to confighash
The [alias] config section affects a global state: commands.table. It's hard
to trace whether an alias is added by a config option or an extension, and
add/remove aliases in a safe way per chg request. It will hurt performance a
bit if we clean the table and parse aliases every time. Therefore let's just
add it to confighash.
This will make chg pass test-pager.t.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29100
devel: use the 'config' argument for the dirstate normalisation develwarn
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29099
devel: use the new 'config' argument for the update develwarn
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29098
devel: use the new 'config' argument for the revset develwarn
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29097
devel: use the new 'config' argument for the dirstate develwarn
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29096
devel: use the new 'config' argument of the develwarn in deprecwarn
Controling all deprecation warnings with the same config seems sensible. This
mirror a fix (about missing gating) submitted for stable but with the new API.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 08 May 2016 10:43:41 +0200] rev 29095
develwarn: move config gating inside the develwarn function
The config gating is almost always the same and contributor tend to forget it.
We move the logic inside the function. Call site will be updated in later
changeset. We might make the sub config mandatory in the future (once all old
call sites are gone).
Matt Harbison <matt_harbison@yahoo.com> [Sun, 08 May 2016 22:28:09 -0400] rev 29094
help: fix the display for `hg help internals.revlogs` (
issue5227)
It previously aborted saying the help section wasn't found. Credit to Yuya for
figuring out the fix.
Sean Farley <sean@farley.io> [Fri, 06 May 2016 14:09:11 -0700] rev 29093
builddeb: add distroseries to tagged versions
This is needed so that launchpad and friends have a unique version number for
each distroseries (trusty, wily, xenial, etc). It was discovered when trying to
upload 3.8 to launchpad.
Sean Farley <sean@farley.io> [Sun, 01 May 2016 15:26:41 -0700] rev 29092
debian: forgot to make debian/rules executable in
6b95a623ec90
Sean Farley <sean@farley.io> [Sat, 30 Apr 2016 21:21:34 -0700] rev 29091
debian: add wish to suggests
Debian maintainers already have this and lintian warns us about not
listing 'wish' as a dependency or suggestion so this patch does indeed
just that. The issue, by the way, is that we are shipping hgk (which is
written in tcl/tk) so we should be good citizens and list wish (a meta
package for tcl/tk) as a dependency.
Sean Farley <sean@farley.io> [Fri, 06 May 2016 23:03:41 -0700] rev 29090
hg-ssh: copy doc string to man page
This corrects a warning from lintian that we're shipping an executable without
a man page. Since there is a doc string in the text, let's use that for the man
page.
Matt Mackall <mpm@selenic.com> [Fri, 06 May 2016 17:53:06 -0500] rev 29089
progress: stop excessive clearing (
issue4801)
The progress bar was being cleared on every write(), regardless of
whether it was currently displayed. This could foul up the display of
any writes that didn't include a linebreak.
In particular, the win32 mode of the color extension was turning
single prompt string writes into two writes, and the resulting
clear/write/clear/write pattern was making the prompt invisible.
We fix this by insisting that we have shown a progress bar and haven't
just cleared it (setting lastprint to 0).
Conveniently, the test suite already had instances of duplicate
clears.. that are now cleared up.
Jun Wu <quark@fb.com> [Fri, 06 May 2016 23:57:56 +0100] rev 29088
chgserver: remove _clearenvaliases
Since we expand environment variables in alias lazily, the _clearenvaliases
hack is no longer necessary.
This resolves an issue that a non-shell alias which has environment variables
in its arguments and is set to use pager will not use pager running with chg.
Jun Wu <quark@fb.com> [Sat, 07 May 2016 00:16:58 +0100] rev 29087
dispatch: defer environment variable resolution in alias commands (BC)
Before this patch, if there are environment variables in an alias command,
they will be expanded immediately when we first see the alias.
This will cause issues with chg, because environment variable updates will
not propagate to expanded arguments.
This patch makes "args" of "cmdalias" a property that will be calculated
every time when accessed.
Augie Fackler <augie@google.com> [Tue, 03 May 2016 16:33:25 -0400] rev 29086
rollback: add a config knob for entirely disabling the command
This is of pretty high value for organizations that used to use p4 (as
an example), since `p4 rollback` is what we call `hg backout`.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 03 May 2016 09:49:54 -0700] rev 29085
templater: add separate() template function
A pretty common pattern in templates is adding conditional separators
like so:
{node}{if(bookmarks, " {bookmarks}")}{if(tags, " {tags}")}
With this patch, the above can be simplified to:
{separate(" ", node, bookmarks, tags)}
The function is similar to the already existing join(), but with a few
differences:
* separate() skips empty arguments
* join() expects a single list argument, while separate() expects
each item as a separate argument
* separate() takes the separator first in order to allow a variable
number of arguments after it
Augie Fackler <augie@google.com> [Wed, 04 May 2016 21:01:49 -0400] rev 29084
bookmarks: jettison bmstore's write() method per deprecation policy
Matt Mackall <mpm@selenic.com> [Thu, 05 May 2016 15:12:43 -0500] rev 29083
merge with stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 05 May 2016 16:29:31 +0200] rev 29082
deprecation: gate deprecation warning behind devel configuration
Regular users are not supposed to be exposed to the API deprecation warnings.
We now only issue them when the developper warnings are enabled.
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 May 2016 19:51:35 +0800] rev 29081
crecord: update downarrowshiftevent() docstring, remove todo
The phrasing is mostly taken from uparrowshiftevent().
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 May 2016 19:40:40 +0800] rev 29080
crecord: remove things that don't happen in functions from their docstrings
Scrolling screen is currently done in a different place. The things that had
been described in the docstrings may still happen, but the functions touched by
this patch don't do any scrolling, they only set self.currentselecteditem and
nothing more.
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 May 2016 18:13:25 +0800] rev 29079
crecord: remove skipfolded keyword argument from patchnode.previtem()
It wasn't used, it wasn't implemented. Probably was a copy-paste bonus from
patchnode.nextitem()
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 May 2016 15:19:37 +0800] rev 29078
crecord: update a copy-pasted comment in downarrowshiftevent()
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 05 May 2016 16:38:24 +0200] rev 29077
crecord: drop the version condition for amend
The UI is now shipped in core, amend feature is always available.
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 May 2016 11:19:52 +0800] rev 29076
crecord: add/remove blank lines (coding style)
Augie Fackler <augie@google.com> [Wed, 04 May 2016 21:02:03 -0400] rev 29075
localrepo: jettison parents() method per deprecation policy (API)
Yuya Nishihara <yuya@tcha.org> [Sun, 17 Apr 2016 13:06:44 +0900] rev 29074
revset: define _parsealias() in _aliasrules class
It's short. It doesn't make sense to define _parsealias() outside of the
class.
Yuya Nishihara <yuya@tcha.org> [Sun, 17 Apr 2016 13:03:23 +0900] rev 29073
revset: factor out common parsing function
Yuya Nishihara <yuya@tcha.org> [Sun, 17 Apr 2016 12:57:27 +0900] rev 29072
revset: inline _tokenizealias() into _parsealias()
This helps factoring out common part between _parsealias() and parse().
timeless <timeless@mozdev.org> [Sun, 10 Apr 2016 07:28:26 +0000] rev 29071
store: treat range as a generator instead of a list for py3 compat
Jun Wu <quark@fb.com> [Wed, 04 May 2016 18:18:24 +0100] rev 29070
ui: add new config option for help text width
Before this patch, when printing help text using `hg help`, or `hg log -h`,
the output will wrap at 78 chars even if the user has a bigger terminal width
and there is no config option to change it, making the experience different
from the commonly used `man` tool.
This patch introduces a new config option `ui.textwidth`, which replaces the
hardcoded number. It's set to 78 by default to maintain compatibility. When
set to 0, `hg help` will behave more like `man`.
timeless <timeless@mozdev.org> [Tue, 03 May 2016 15:26:51 +0000] rev 29069
tests: test histedit base command plan help
liscju <piotr.listkiewicz@gmail.com> [Tue, 03 May 2016 23:48:31 +0200] rev 29068
largefiles: makes verify batching stat calls to remote
Instead of sending stat calls for each files separately, it sends
one batch call with stat invocations for all files.
liscju <piotr.listkiewicz@gmail.com> [Tue, 03 May 2016 23:31:32 +0200] rev 29067
largefiles: change basestore._verifyfile to take list of files to check
Makes it easier to use batch stat calls in remotestore to decrease
number of round trips.
Augie Fackler <augie@google.com> [Wed, 04 May 2016 22:44:30 -0400] rev 29066
bookmarks: properly invalidate volatile sets when writing bookmarks
This corrects a regression introduced during the 3.7 cycle, but which
went undetected due to the surviving-but-deprecated write() method on
bmstore.
Augie Fackler <augie@google.com> [Thu, 05 May 2016 15:41:37 +0200] rev 29065
test-obsolete: update extension in test to actually work
This hasn't been testing anything since partway through the 3.7 cycle
due to unrelated refactoring. Sadly, the behavior it was trying to
prevent reemerged in the codebase at that time. A fix is in the next
patch, because proving that the fix was actually correct ended up
being trickier than I expected.
Mike Hommey <mh@glandium.org> [Thu, 05 May 2016 20:57:38 +0900] rev 29064
bundle2: properly request phases during getbundle
getbundle was requesting the "phase" namespace instead of the "phases"
namespace, which led to the client still requesting the phases
separately after getbundle finished.
timeless <timeless@mozdev.org> [Mon, 11 Apr 2016 21:33:07 +0000] rev 29063
rebase: handle successor targets (
issue5198)
When a parent has a successor (indicated by revprecursor in state),
we need to use it.