Matt Harbison <matt_harbison@yahoo.com> [Wed, 03 Jun 2015 14:21:15 -0400] rev 25418
scmutil: consistently return subrepos relative to ctx1 from itersubrepos()
Previously, if a subrepo was added in ctx2 and then compared to another without
it (ctx1), the subrepo for ctx2 was returned amongst all of the ctx1 based
subrepos, since no subrepo exists in ctx1 to replace it in the 'subpaths' dict.
The two callers of this, basectx.status() and cmdutil.diffordiffstat(), both
compare the yielded subrepo against ctx2, and thus saw no changes when ctx2's
subrepo was returned. The tests here previously didn't mention 's/a' for the
'p1()' case.
This appears to have been a known issue, because some diffordiffstat() comments
mention that the subpath disappeared, and "the best we can do is ignore it". I
originally ran into the issue with some custom convert code to flatten a tree of
subrepos causing hg.putcommit() to abort, but this new behavior seems like the
correct status and diff behavior regardless. (The abort in convert isn't
something users will see, because convert doesn't currently support subrepos in
the official repo.)
Matt Harbison <matt_harbison@yahoo.com> [Wed, 03 Jun 2015 13:51:27 -0400] rev 25417
context: introduce the nullsub() method
Ultimately, this will be used by scmutil. The subrepo module already imports
it, so it can't import the subrepo module to access the underlying method.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 03 Jun 2015 13:45:42 -0400] rev 25416
subrepo: introduce the nullsubrepo() method
This will be used in an upcoming patch. It's a one-off use, but seems better to
be contained in the subrepo module, than for the next patch to overwrite the
_ctx and _state fields in another module. '' is used as the default revision in
subrepo.state() if it can't be found, so it seems like a safe choice.
Yuya Nishihara <yuya@tcha.org> [Thu, 07 May 2015 17:15:24 +0900] rev 25415
ssl: prompt passphrase of client key file via ui.getpass() (
issue4648)
This is necessary to communicate with third-party tools through command-server
channel. This requires SSLContext backported to Python 2.7.9+.
It doesn't look nice to pass ui by sslkwargs, but I think it is the only way
to do without touching various client codes including httpclient (aka http2).
ui is mandatory if certfile is specified, so it has no default value.
BTW, test-check-commit-hg.t complains that ssl_wrap_socket() has foo_bar
naming. Should I bulk-replace it to sslwrapsocket() ?
Yuya Nishihara <yuya@tcha.org> [Thu, 07 May 2015 17:02:20 +0900] rev 25414
https: do not inherit httplib.HTTPSConnection that creates unused SSLContext
HTTPSConnection of Python 2.7.9 creates SSLContext in __init__, which involves
a password prompt for decrypting the private key. This means the password was
asked twice, one for unused SSLContext, and next for our ssl function.
Because our httpsconnection replaces connect() method at all, we can simply
drop httplib.HTTPSConnection. Instead, class and instance attributes are copied
from it.
HTTPSConnection of Python 2.7.8 and 2.6.9 seem to have no such problem.
https://hg.python.org/cpython/file/v2.7.9/Lib/httplib.py#l1183
Yuya Nishihara <yuya@tcha.org> [Thu, 07 May 2015 17:38:22 +0900] rev 25413
test-https: test basic functions of client certificate authentication
Because hgweb doesn't support client certificates, I just patched it to
require client certificates that are signed and verified by the server
certificate. This won't be ideal for production servers, but should be okay
for the test.
The encrypted key file will be used by future patches. I couldn't figure out
a way to redirect a password prompt provided by OpenSSL, so it isn't tested
for now.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 01 Jun 2015 14:16:52 -0400] rev 25412
phases: add `hg help phases` hint to failures to edit public commits
There were a couple of locations that were missing this hint after an
edition of some kind failed due to the public phase.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 01 Jun 2015 18:05:38 +0000] rev 25411
phases: rewrite "immutable changeset" to "public changeset"
The phrase "cannot edit immutable changeset" is kind of tautological.
Of course unchangeable things can't be changed. We instead mention
"public" and provide a hint so that we can point to the actual
problem. Even in cases where some operation other than edition cannot
be performed, "public" gives the root cause that results in the
"immutable" effect.
There is a precedent for saying "public" instead of "immutable", for
example, in `hg commit --amend`.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 02 Jun 2015 15:04:39 -0400] rev 25410
revlog: raise an exception earlier if an entry is too large (
issue4675)
Before we were relying on _pack to error out when trying to pass an
integer that was too large for the "i" format specifier. Now we check
this earlier so we can form a better error message.
The error message unfortunately must exclude the filename at this
level of the call stack. The problem is that this name is not
available here, and the error can be triggered by a large manifest or
by a large file itself. Although perhaps we could provide the name of
a revlog index file (from the revlog object, instead of the revlogio
object), this seems like too much leakage of internal data structures.
It's not ideal already that an error message even mentions revlogs,
but this does seem unavoidable here.
Steve Borho <steve@borho.org> [Wed, 03 Jun 2015 14:31:19 -0500] rev 25409
wix: move library.zip and all *.pyd into a lib/ folder
This makes the root install folder (on Windows) nice and tidy. The
only files left in the root folder are:
hg.exe
python27.dll
COPYING.rtf
ReadMe.html
the last of which was probably out-of-date 7 years ago