Thu, 28 Jul 2016 16:27:35 -0400 test-treemanifest: ensure manifest command isn't broken
Augie Fackler <augie@google.com> [Thu, 28 Jul 2016 16:27:35 -0400] rev 29699
test-treemanifest: ensure manifest command isn't broken I realized we weren't testing this while hunting a broken manifest command bug that ended up being narrowhg's fault.
Thu, 04 Aug 2016 00:32:19 +0530 py3: use unicode literals in pure/osutil.py
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:32:19 +0530] rev 29698
py3: use unicode literals in pure/osutil.py The first element of _fields_ tuples must be a str in Python 3. Also fix some function calls that were also expecting str.
Thu, 04 Aug 2016 00:21:14 +0530 py3: use unicode literals in crecord.py
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:21:14 +0530] rev 29697
py3: use unicode literals in crecord.py
Thu, 04 Aug 2016 00:15:39 +0530 py3: use unicode literals in changelog.py
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:15:39 +0530] rev 29696
py3: use unicode literals in changelog.py collections.namedtuple type and field names must be str in Python 3. Our custom module importer was rewriting them to bytes literals, making this fail. In addition, __slots__ values must also be unicode.
Mon, 25 Jul 2016 15:10:52 +0200 mpatch: write a cffi version of mpatch.patches
Maciej Fijalkowski <fijall@gmail.com> [Mon, 25 Jul 2016 15:10:52 +0200] rev 29695
mpatch: write a cffi version of mpatch.patches
Fri, 22 Jul 2016 17:28:05 +0200 mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com> [Fri, 22 Jul 2016 17:28:05 +0200] rev 29694
mpatch: remove dependency on Python.h in mpatch.c Now all the CPython-related stuff are referenced only from mpatch_module.c with mpatch.c being freely usable from a future cffi module
Mon, 18 Jul 2016 19:02:30 +0200 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 19:02:30 +0200] rev 29693
mpatch: split mpatch into two files
Mon, 18 Jul 2016 16:25:14 +0200 mpatch: provide things that will be exported later with a prefixed name
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 16:25:14 +0200] rev 29692
mpatch: provide things that will be exported later with a prefixed name For cffi a bunch of mpatch functions need to be visible through a .h file. This change renames them so it won't create potential c namespace conflicts.
Mon, 18 Jul 2016 15:14:40 +0200 mpatch: change Py_ssize_t to ssize_t in places that will be later copied
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 15:14:40 +0200] rev 29691
mpatch: change Py_ssize_t to ssize_t in places that will be later copied
Wed, 03 Aug 2016 22:07:52 -0700 discovery: move code to create outgoing from roots and heads
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 03 Aug 2016 22:07:52 -0700] rev 29690
discovery: move code to create outgoing from roots and heads changegroup.changegroupsubset() contained somewhat low-level code for constructing an "outgoing" instance from a list of roots and heads nodes. It feels like discovery.py is a more appropriate location for this code. This code can definitely be optimized, as outgoing.missing will recompute the set of changesets we've already discovered from cl.between(). But code shouldn't be refactored during a move, so I've simply inserted a TODO calling attention to that.
Wed, 03 Aug 2016 16:23:26 +0200 bundle2: remove 'experimental.bundle2-exp' boolean config (BC)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 16:23:26 +0200] rev 29689
bundle2: remove 'experimental.bundle2-exp' boolean config (BC) All users are migrated to 'devel.legacy.exchange', we can clean up the experimental namespace. Marking as (BC) because I know some large installation have bundle2 off and I want to make sure they notice the change.
Wed, 03 Aug 2016 15:52:11 +0200 tests: remove all remaining usage of experimental.bundle2-exp
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:52:11 +0200] rev 29688
tests: remove all remaining usage of experimental.bundle2-exp The only remaining usage of the experimental config were enforcing bundle2 on. These are very old remains of when bundle2 was off by default. This was also useful to highlight the fact that this was a bundle2 run and that a bundle1 one was nearby. However, we want a future developer working on bundle3 to notice possible output/behavior change on these tests and take them in account. So we do not enforce bundle2 for these runs. We leave a comment around to make sure dev still notice the bundle1 version.
Wed, 03 Aug 2016 15:39:55 +0200 tests: use 'legacy.exchange' option in various mixed tests
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:39:55 +0200] rev 29687
tests: use 'legacy.exchange' option in various mixed tests The new option will stay around. The experimental option was only meant to be temporary. We update various tests that validate both bundle1 and bundle2 version side by side. This changeset only takes care of enforcing bundle1. The other use of 'experimental.bundle2-exp=True' will be taken care of in the next changeset.
Wed, 03 Aug 2016 15:34:03 +0200 tests: use 'legacy.exchange' option in various bundle1 tests
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:34:03 +0200] rev 29686
tests: use 'legacy.exchange' option in various bundle1 tests The new option will stay around. The experimental option was only meant to be temporary.
Tue, 02 Aug 2016 15:23:03 +0200 tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:23:03 +0200] rev 29685
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t' The new option will stay around. The experimental option was only meant to be temporary.
Wed, 03 Aug 2016 16:42:10 +0200 bundlerepo: also read the 'devel.legacy.exchange' config
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 16:42:10 +0200] rev 29684
bundlerepo: also read the 'devel.legacy.exchange' config Bundlerepo does its own bundle2 related logic.
Tue, 02 Aug 2016 14:48:21 +0200 bundle2: add a devel option controling bundle version used for exchange
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 14:48:21 +0200] rev 29683
bundle2: add a devel option controling bundle version used for exchange We need an official way to force bundle1 to be used in test. We introduce a new option 'devel.legacy.exchange' to control this. When specified, this option will control the list of bundle version Mercurial consider when exchanging with a peer. Current valid value are 'bundle1' and 'bundle2'. Using this option in all tests will allow us to remove the 'experimental.bundle2-exp' option. We will simplify the code once the experimental option is dropped.
Wed, 03 Aug 2016 15:01:23 +0200 bundle2: rename the _canusebundle2 method to _forcebundle1
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:01:23 +0200] rev 29682
bundle2: rename the _canusebundle2 method to _forcebundle1 We rename and invert the logic of the _canusebundle2 utility. The idea here is that we need to have a way to enforce the use of bundle1 in the tests. The Mercurial philosophy is to try to use the best method available. Currently that best method is bundle2, but this might change in the future. Therefore expressing "do not use bundle2" is a loosy way to say "use bundle 1" and will likely create issue in the future. As the config option will be explicitly about bundle1, we rename the function beforehand to align with this. This will make the life of a future developer working on bundle3 easier.
Wed, 03 Aug 2016 14:24:09 +0200 tests: remove bundle2 activation from test-bookmark-pushpull.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 14:24:09 +0200] rev 29681
tests: remove bundle2 activation from test-bookmark-pushpull.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Thu, 04 Aug 2016 19:51:03 +0800 tests: update bugzilla link in test-issue1175.t
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:51:03 +0800] rev 29680
tests: update bugzilla link in test-issue1175.t
Sun, 31 Jul 2016 17:11:48 +0900 journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 17:11:48 +0900] rev 29679
journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
Sun, 31 Jul 2016 17:07:29 +0900 formatter: add function to convert date tuple to appropriate format
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 17:07:29 +0900] rev 29678
formatter: add function to convert date tuple to appropriate format
Sun, 31 Jul 2016 16:56:26 +0900 journal: use fm.formatlist() to pass hashes in appropriate type (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 16:56:26 +0900] rev 29677
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
Sun, 10 Jul 2016 21:03:06 +0900 formatter: add function to convert list to appropriate format (issue5217)
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jul 2016 21:03:06 +0900] rev 29676
formatter: add function to convert list to appropriate format (issue5217) Before, it wasn't possible for formatter to handle array structure other than date tuple. We've discussed that at the last sprint, which ended we would probably want to allow only templatable data structure, i.e. a list of dicts: data(tags=[{'tag': a}, {'tag': b}, ...]) Unfortunately, it turned out not working well with template functions: "{ifcontains(a, tags, ...)}" ^^^^^^^^^^^^^^^^^^ "a in tags", where tags should be a plain list/set of tags So the formatter must at least know if the type [{}] was constructed from a plain list or was actually a list of dicts. This patch introduces new explicit interface to convert an array structure to an appropriate data type for the current formatter, which can be used as follows: fm.write('tags', _('tags: %s\n'), fm.formatlist(tags, name='tag')) No separate fm.data() call should be necessary.
Sun, 31 Jul 2016 16:38:16 +0900 journal: use fm.hexfunc() to get full hash in JSON/template output (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 16:38:16 +0900] rev 29675
journal: use fm.hexfunc() to get full hash in JSON/template output (BC) We generally do that.
Thu, 04 Aug 2016 00:04:48 +0530 py3: update test-check-py3-compat.t output
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:04:48 +0530] rev 29674
py3: update test-check-py3-compat.t output The lower part of test-check-py3-compat.t runs only on py3 and hence its remain unchanged. Hence this patch updates the output so that change in output in the next patches will be only related to the change in the patch.
Tue, 02 Aug 2016 16:51:27 +0200 deprecation: enforce thew 'tr' argument of 'dirstate.write' (API)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 16:51:27 +0200] rev 29673
deprecation: enforce thew 'tr' argument of 'dirstate.write' (API) Compatibility was meant to be drop after 3.9 is released.
Tue, 02 Aug 2016 14:54:06 +0200 tests: remove initial bundle2 enabling in various bundle2 tests
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 14:54:06 +0200] rev 29672
tests: remove initial bundle2 enabling in various bundle2 tests Bundle 2 is enable by default since 3.6 so we don't need this anymore. The remaining use of 'experimental.bundle2-exp' are there to test legacy behavior with bundle 1. Future patches will introduce a way outside of experimental to test that.
Tue, 02 Aug 2016 15:44:51 +0200 tests: remove bundle2 activation from test-largefiles.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:44:51 +0200] rev 29671
tests: remove bundle2 activation from test-largefiles.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 15:05:57 +0200 tests: remove bundle2 activation from test-tags.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:05:57 +0200] rev 29670
tests: remove bundle2 activation from test-tags.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Sat, 23 Jul 2016 13:08:43 +0900 templatekw: change joinfmt to a mandatory argument of _hybrid object
Yuya Nishihara <yuya@tcha.org> [Sat, 23 Jul 2016 13:08:43 +0900] rev 29669
templatekw: change joinfmt to a mandatory argument of _hybrid object We've fixed several bugs caused by the misuse of the default joinfmt. Make it more explicit to prevent future bugs. dict.values()[0] is replaced by dict[element] as showlist() knows what the key is.
Mon, 01 Aug 2016 17:38:01 -0700 convert: move svn config initializer out of the module level stable
Durham Goode <durham@fb.com> [Mon, 01 Aug 2016 17:38:01 -0700] rev 29668
convert: move svn config initializer out of the module level The svn_config_get_config config call was being called at the module level, but had the potential to throw permission denied errors if ~/.subversion/servers was not readable. This could happen in certain test environments where the user permissions were very particular. This prevented the remotenames extension from loading, since it imports convert's hg module, which imports convert's subversion module, which calls this. The config is only ever used from this one constructor, so let's just move it in to there.
Thu, 04 Aug 2016 19:53:46 +0800 osx: update bugzilla link in readme stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:53:46 +0800] rev 29667
osx: update bugzilla link in readme
Thu, 04 Aug 2016 19:50:25 +0800 win32: update link to mailing list in readme stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:50:25 +0800] rev 29666
win32: update link to mailing list in readme
Thu, 04 Aug 2016 19:50:06 +0800 win32: update wiki link in mercurial.ini stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:50:06 +0800] rev 29665
win32: update wiki link in mercurial.ini
Thu, 04 Aug 2016 19:49:07 +0800 debian: update source URL in copyright file stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:49:07 +0800] rev 29664
debian: update source URL in copyright file
Thu, 04 Aug 2016 10:42:03 +0800 help: update link to wiki/CommandServer stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 10:42:03 +0800] rev 29663
help: update link to wiki/CommandServer
Mon, 18 Jul 2016 23:12:09 +0900 url: drop compatibility wrapper of socket.create_connection()
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Jul 2016 23:12:09 +0900] rev 29662
url: drop compatibility wrapper of socket.create_connection() It should be available on Python 2.6+.
Sat, 14 May 2016 14:37:25 +0900 doc: remove double imports of inspect from hgmanpage.py
Yuya Nishihara <yuya@tcha.org> [Sat, 14 May 2016 14:37:25 +0900] rev 29661
doc: remove double imports of inspect from hgmanpage.py
Tue, 05 May 2015 10:51:34 +0900 merge: concatenate default conflict marker at parsing phase of .py
Yuya Nishihara <yuya@tcha.org> [Tue, 05 May 2015 10:51:34 +0900] rev 29660
merge: concatenate default conflict marker at parsing phase of .py "+" operations are unnecessary.
Tue, 02 Aug 2016 03:54:17 +0200 tests: remove bundle2 activation from test-push-warn.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:54:17 +0200] rev 29659
tests: remove bundle2 activation from test-push-warn.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 03:53:48 +0200 tests: remove bundle2 activation from test-phases-exchanges.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:48 +0200] rev 29658
tests: remove bundle2 activation from test-phases-exchanges.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 03:53:17 +0200 tests: remove bundle2 activation from test-obsolete.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:17 +0200] rev 29657
tests: remove bundle2 activation from test-obsolete.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 03:53:05 +0200 tests: remove bundle2 activation from test-http-proxy.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:05 +0200] rev 29656
tests: remove bundle2 activation from test-http-proxy.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 03:50:58 +0200 tests: remove bundle2 activation from test-hook.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:50:58 +0200] rev 29655
tests: remove bundle2 activation from test-hook.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Tue, 02 Aug 2016 03:50:42 +0200 tests: remove bundle2 activation from test-acl.t
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:50:42 +0200] rev 29654
tests: remove bundle2 activation from test-acl.t This is an old config that predate bundle2 on by default. This should have been remove after Mercurail 3.6 got released.
Mon, 01 Aug 2016 13:14:13 -0400 merge with stable
Augie Fackler <augie@google.com> [Mon, 01 Aug 2016 13:14:13 -0400] rev 29653
merge with stable
Mon, 01 Aug 2016 12:37:25 -0400 Added signature for changeset 299546f84e68 stable
Augie Fackler <raf@durin42.com> [Mon, 01 Aug 2016 12:37:25 -0400] rev 29652
Added signature for changeset 299546f84e68
Mon, 01 Aug 2016 12:37:23 -0400 Added tag 3.9 for changeset 299546f84e68 stable
Augie Fackler <raf@durin42.com> [Mon, 01 Aug 2016 12:37:23 -0400] rev 29651
Added tag 3.9 for changeset 299546f84e68
Mon, 01 Aug 2016 12:11:56 -0400 merge with i18n stable 3.9
Augie Fackler <augie@google.com> [Mon, 01 Aug 2016 12:11:56 -0400] rev 29650
merge with i18n
Mon, 01 Aug 2016 06:08:27 +0900 doc: make previous line of certificate example end with "::" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:27 +0900] rev 29649
doc: make previous line of certificate example end with "::" Before this patch, certificate example is formatted just as normal text.
Mon, 01 Aug 2016 06:08:27 +0900 doc: fix incorrect use of rst hg role in help text stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:27 +0900] rev 29648
doc: fix incorrect use of rst hg role in help text
Mon, 01 Aug 2016 06:08:26 +0900 doc: use field rst syntax to show keywords in debugdeltachain help correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:26 +0900] rev 29647
doc: use field rst syntax to show keywords in debugdeltachain help correctly List of available keywords is well formatted as a list of fields in doc string, but is formatted as just normal text in online help output.
Mon, 01 Aug 2016 06:08:26 +0900 revset: refactor to make xgettext put i18n comments into hg.pot file stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:26 +0900] rev 29646
revset: refactor to make xgettext put i18n comments into hg.pot file xgettext expects both "_()" and (a part of) text to be placed at just next line of "i18n:" comment.
Mon, 01 Aug 2016 06:08:26 +0900 doc: omit useless _() invocation stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:26 +0900] rev 29645
doc: omit useless _() invocation In this case, column positioning isn't needed for i18n, too. Maybe, check-code warning "missing _() in ui message" caused this useless _() invocation in 92d37fb3f1aa.
Mon, 01 Aug 2016 06:08:25 +0900 doc: trim newline at the end of exception message stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 06:08:25 +0900] rev 29644
doc: trim newline at the end of exception message
Mon, 01 Aug 2016 08:27:22 +0900 i18n-ja: synchronized with 6fd751fa58d3 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 08:27:22 +0900] rev 29643
i18n-ja: synchronized with 6fd751fa58d3
Sun, 31 Jul 2016 05:39:59 +0900 demandimport: avoid infinite recursion at actual module importing (issue5304) stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 31 Jul 2016 05:39:59 +0900] rev 29642
demandimport: avoid infinite recursion at actual module importing (issue5304) Before this patch, importing C module on Windows environment causes infinite recursion call, if py2exe is used with -b2 option. At importing C module "a.b", extra hooking by zipextimporter of py2exe causes: 0. assumption before accessing "b" of "a": - built-in module object is created for "a", (= "a" is actually imported) - _demandmod is created for "a.b" as a proxy object, and (= "a.b" is not yet imported) - an attribute "b" of "a" is initialized by the latter 1. invocation of __import__ via _hgextimport() in _demandmod._load() for "a.b" implies _demandimport() for "a.b" This is unintentional, because _demandmod might be returned by _hgextimport() instead of built-in module object. 2. _demandimport() at (1) is invoked with not context of "a", but context of zipextimporter Just after invocation of _hgextimport() in _demandimport(), an attribute "b" of the built-in module object for "a" is still bound to the proxy object for "a.b", because context of "a" isn't updated by actual importing "a.b". even though the built-in module object for "a.b" already appears in sys.modules. Therefore, chainmodules() returns _demandmod for "a.b", which is gotten from the attribute "b" of "a". 3. processfromitem() on "a.b" causes _demandmod._load() for "a.b" again _demandimport() takes context of "a" in this case. Therefore, attributes below are bound to built-in module object for "a.b", as expected: - "b" of built-in module object for "a" - _module of _demandmod for "a.b" 4. but _demandimport() invoked at (1) returns _demandmod object because _demandimport() just returns the object returned by chainmodules() at (3) above. 5. then, _demandmod._load() causes infinite recursion call _demandimport() returns _demandmod for "a.b", and it is "self" at _demandmod._load(). To avoid infinite recursion at actual module importing, this patch uses self._module, if _hgextimport() returns _demandmod itself. If _demandmod._module isn't yet bound at this point, execution should be aborted, because actual importing failed. In this patch, _demandmod._module is examined not on _demandimport() side, but on _demandmod._load() side, because: - the former has some exit points - only the latter uses _hgextimport(), except for _demandimport() BTW, this issue occurs only in the code path for non .py/.pyc files in zipextimporter (strictly speaking, in _memimporter) of py2exe. Even if zipextimporter is enabled, .py/.pyc files are handled by zipimporter, and it doesn't imply unintentional _demandimport() at invocation of __import__ via _hgextimport().
Fri, 29 Jul 2016 00:45:24 +0200 packagelib: do not remove packages directory in hggetversion (issue5262) stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 29 Jul 2016 00:45:24 +0200] rev 29641
packagelib: do not remove packages directory in hggetversion (issue5262) People running packages related code probably do care about the content of this directory. In particular this shound fix the rpm builder process.
Fri, 29 Jul 2016 00:39:59 +0200 make: introduce a target to clean everything but packages stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 29 Jul 2016 00:39:59 +0200] rev 29640
make: introduce a target to clean everything but packages Removing the 'packages' directory makes nightly builder life much harder.
Fri, 29 Jul 2016 12:46:07 +0100 url: avoid re-issuing incorrect password (issue3210) stable
Kim Randell <Kim.Randell@vicon.com> [Fri, 29 Jul 2016 12:46:07 +0100] rev 29639
url: avoid re-issuing incorrect password (issue3210) Some draconian IT setups lock accounts after a small number of incorrect password attempts. Mercurial's implementation of the urllib2 authentication was causing 5 retry attempts with the same credentials, without prompting the user. The code was attempting to check whether the authorization token had changed, but unfortunately was reading the misleading 'headers' member of the request instead of using the 'get_header' accessor. Modelled on fix for Python issue 8797: https://bugs.python.org/issue8797 https://hg.python.org/cpython/rev/30e8a8f22a2a
Wed, 27 Jul 2016 15:22:36 -0500 date: accept broader range of ISO 8601 time specs stable
Matt Mackall <mpm@selenic.com> [Wed, 27 Jul 2016 15:22:36 -0500] rev 29638
date: accept broader range of ISO 8601 time specs The "normal" ISO date/time includes a T between date and time. It also allows dropping the colons and seconds from the timespec. Add new patterns for these forms as well as tests.
Wed, 27 Jul 2016 15:20:34 -0500 date: parse ISO-style Z and +hh:mm timezone specs stable
Matt Mackall <mpm@selenic.com> [Wed, 27 Jul 2016 15:20:34 -0500] rev 29637
date: parse ISO-style Z and +hh:mm timezone specs
Wed, 27 Jul 2016 15:14:19 -0500 date: refactor timezone parsing stable
Matt Mackall <mpm@selenic.com> [Wed, 27 Jul 2016 15:14:19 -0500] rev 29636
date: refactor timezone parsing We want to be able to accept ISO 8601 style timezones that don't include a space separator, so we change the timezone parsing function to accept a full date string and return both the offset and the non-timezone portion.
Thu, 28 Jul 2016 08:53:36 -0700 tests: glob over ssl error stable
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 28 Jul 2016 08:53:36 -0700] rev 29635
tests: glob over ssl error We do this in the rest of the file. This bad line was introduced in 3fde328d0913.
Wed, 27 Jul 2016 13:57:51 +0100 keyword: avoid traceback when kwdemo is run outside a repo stable
Christian Ebert <blacktrash@gmx.net> [Wed, 27 Jul 2016 13:57:51 +0100] rev 29634
keyword: avoid traceback when kwdemo is run outside a repo f0564402d059 causes a fatal AttributeError if kwdemo is run outside a repo because in the temporary repo creation repo is None and therefore cannot have a baseui attribute. In this case fall back to using ui. Add test case.
Wed, 27 Jul 2016 08:38:54 +0000 cmdutil: warnings not issued in cat if subrepopath overlaps stable
Hannes Oldenburg <hannes.christian.oldenburg@gmail.com> [Wed, 27 Jul 2016 08:38:54 +0000] rev 29633
cmdutil: warnings not issued in cat if subrepopath overlaps Previously a subrepository "sub" would cause no warnings to be issued for a file "subnot/a", if it's not present in the corresponding changeset when calling: hg cat subnot/a
Mon, 25 Jul 2016 17:00:42 +0200 graft: use opts.get() consistently stable
Gábor Stefanik <gabor.stefanik@nng.com> [Mon, 25 Jul 2016 17:00:42 +0200] rev 29632
graft: use opts.get() consistently Make life easier for extension writers.
Mon, 25 Jul 2016 12:00:55 -0700 sslutil: work around SSLContext.get_ca_certs bug on Windows (issue5313) stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 25 Jul 2016 12:00:55 -0700] rev 29631
sslutil: work around SSLContext.get_ca_certs bug on Windows (issue5313) SSLContext.get_ca_certs() can raise "ssl.SSLError: unknown error (_ssl.c:636)" on Windows. See https://bugs.python.org/issue20916 for more info. We add a try..except that swallows the exception to work around this bug. If we encounter the bug, we won't print a warning message about attempting to load CA certificates. This is unfortunate. But there appears to be little we can do :/
Mon, 18 Jul 2016 16:25:35 -0500 extdiff: escape path for docstring (issue5301) stable
Matt Mackall <mpm@selenic.com> [Mon, 18 Jul 2016 16:25:35 -0500] rev 29630
extdiff: escape path for docstring (issue5301) The existing code (a) assumed path would be specified in encoding.encoding and (b) assumed unicode() objects wouldn't cause other parts of Mercurial to blow up. Both are dangerous assumptions. Since we don't know the encoding of path and can't pass non-ASCII through docstrings, just escape the path and drop the early _(). Will have to suffice until we can teach docstrings to handle UTF-8b escaping. This has the side-effect that the line containing the path is now variable by the time it reaches _() and thus can't be translated.
Thu, 21 Jul 2016 15:55:47 -0700 update: fix bug when update tries to modify folder symlink stable
Kostia Balytskyi <ikostia@fb.com> [Thu, 21 Jul 2016 15:55:47 -0700] rev 29629
update: fix bug when update tries to modify folder symlink In 1e4512eac59e0114bc60ecbcdc4157fc0fa0439d, I introduced a new bug: when a symlink points to a folder in commit A and to another folder in commit B, while updating from A to B, Mercurial will try to use removedir on this symlink, which will fail. This is a very bad bug, since it basically renders symlinks to folders unusable in repos. Added test case fails without a fix and passes with it.
Mon, 25 Jul 2016 12:59:52 +0800 spartan: make annotate popup use theme colors stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 25 Jul 2016 12:59:52 +0800] rev 29628
spartan: make annotate popup use theme colors
Mon, 25 Jul 2016 12:37:58 +0800 monoblue: make annotate popup use theme colors stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 25 Jul 2016 12:37:58 +0800] rev 29627
monoblue: make annotate popup use theme colors
Mon, 25 Jul 2016 12:33:18 +0800 gitweb: make annotate popup use theme colors stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 25 Jul 2016 12:33:18 +0800] rev 29626
gitweb: make annotate popup use theme colors
Mon, 25 Jul 2016 12:22:17 +0800 paper: make annotate popup use theme colors stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 25 Jul 2016 12:22:17 +0800] rev 29625
paper: make annotate popup use theme colors
Fri, 22 Jul 2016 22:12:12 +0900 templatekw: fix join format of parents keyword (issue5292) stable
Yuya Nishihara <yuya@tcha.org> [Fri, 22 Jul 2016 22:12:12 +0900] rev 29624
templatekw: fix join format of parents keyword (issue5292) Since the default joinfmt() can't process a dict of multiple keywords, we need a dedicated joinfmt for showparents(). Unlike revset(), parents are formatted as '{rev}:{node|formatnode}' by default. We copy the default formatting just like showextras() and showfilecopies() do.
Fri, 22 Jul 2016 22:00:46 +0900 templatekw: fix join format of revset() function stable
Yuya Nishihara <yuya@tcha.org> [Fri, 22 Jul 2016 22:00:46 +0900] rev 29623
templatekw: fix join format of revset() function It's been broken since e4609ec959f8, which made makemap() return a dict of multiple keywords. Because the default joinfmt() randomly picks one item from a dict, we have to make revset() select d[name] explicitly.
Fri, 22 Jul 2016 11:29:42 +0000 cmdutil: warnings not issued in remove if subrepopath overlaps stable
Hannes Oldenburg <hannes.christian.oldenburg@gmail.com> [Fri, 22 Jul 2016 11:29:42 +0000] rev 29622
cmdutil: warnings not issued in remove if subrepopath overlaps Previously a subrepository "sub" would cause no warnings to be issued for a file "subnot/a" if it is not removed when calling: hg remove -S "subnot/a"
Wed, 20 Jul 2016 14:12:45 -0500 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Wed, 20 Jul 2016 14:12:45 -0500] rev 29621
merge with i18n
Tue, 19 Jul 2016 19:01:11 -0300 i18n-pt_BR: synchronized with 519bb4f9d3a4 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 19 Jul 2016 19:01:11 -0300] rev 29620
i18n-pt_BR: synchronized with 519bb4f9d3a4
Tue, 19 Jul 2016 21:09:58 -0700 sslutil: improve messaging around unsupported protocols (issue5303) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2016 21:09:58 -0700] rev 29619
sslutil: improve messaging around unsupported protocols (issue5303) There are various causes for the inability to negotiate common SSL/TLS protocol between client and server. Previously, we had a single, not very actionable warning message for all of them. As people encountered TLS 1.0 servers in real life, it was quickly obvious that the existing messaging was inadequate to help users rectify the situation. This patch makes the warning messages much more verbose in hopes of making them more actionable while simultaneously encouraging users and servers to adopt better security practices. This messaging flirts with the anti-pattern of "never blame the user" by signaling out poorly-configured servers. But if we're going to disallow TLS 1.0 by default, I think we need to say *something* or people are just going to blame Mercurial for not being able to connect. The messaging tries to exonerate Mercurial from being the at fault party by pointing out the server is the entity that doesn't support proper security (when appropriate, of course).
Tue, 19 Jul 2016 20:30:29 -0700 sslutil: capture string string representation of protocol stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2016 20:30:29 -0700] rev 29618
sslutil: capture string string representation of protocol This will be used in a subsequent patch to improve messaging.
Tue, 19 Jul 2016 20:16:51 -0700 sslutil: allow TLS 1.0 when --insecure is used stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2016 20:16:51 -0700] rev 29617
sslutil: allow TLS 1.0 when --insecure is used --insecure is our psuedo-supported footgun for disabling connection security. The flag already disables CA verification. I think allowing the use of TLS 1.0 when specified is appropriate.
Tue, 19 Jul 2016 19:57:34 -0700 hg: copy [hostsecurity] options to remote ui instances (issue5305) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2016 19:57:34 -0700] rev 29616
hg: copy [hostsecurity] options to remote ui instances (issue5305) TIL that ui instances for remote/peer repos don't automagically inherit config options from .hg/hgrc files. This patch makes remote ui instances inherit options from the [hostsecurity] section. We were already inheriting options from [hostfingerprints] and [auth]. So adding [hostsecurity] to the list seems appropriate.
Mon, 18 Jul 2016 22:25:09 +0200 rbc: fix superfluous rebuilding from scratch - don't abuse self._rbcnamescount stable
Mads Kiilerich <madski@unity3d.com> [Mon, 18 Jul 2016 22:25:09 +0200] rev 29615
rbc: fix superfluous rebuilding from scratch - don't abuse self._rbcnamescount The code used self._rbcnamescount as if it was the length of self._names ... but actually it is just the number of good entries on disk. This caused the cache to be populated inefficiently. In some cases very inefficiently. Instead of checking the length before lookup, just try a lookup in self._names - that is also in most cases faster. Comments and debug messages are tweaked to help understanding the issue and the fix.
Mon, 18 Jul 2016 22:23:44 +0200 rbc: test case for incorrect and too aggressive invalidation of invalid caches stable
Mads Kiilerich <madski@unity3d.com> [Mon, 18 Jul 2016 22:23:44 +0200] rev 29614
rbc: test case for incorrect and too aggressive invalidation of invalid caches
Tue, 19 Jul 2016 10:15:35 -0700 util: better handle '-' in version string (issue5302) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2016 10:15:35 -0700] rev 29613
util: better handle '-' in version string (issue5302) versiontuple() was previously only splitting on '+' and strings like "3.9-rc" were causing it to misreport the version as (3, None). By splitting on either '+' or '-' we can handle our version strings with "-rc" in them.
Tue, 19 Jul 2016 11:00:32 -0500 convert: update use of deprecated bzrlib property stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Tue, 19 Jul 2016 11:00:32 -0500] rev 29612
convert: update use of deprecated bzrlib property The inventory property was deprecated in favor of root_inventory in bzr 2.5.0. Current version is 2.7.0. I noticed this when testing locally on Python 2.6.9, which has warnings turned on by default. The failure that occurs without this patch can be seen on Python 2.7 by running with warnings enabled: $ PYTHONWARNINGS=::DeprecationWarning make 'test-convert-bzr*'
Tue, 19 Jul 2016 21:16:44 +0900 hghave: fix typo of sslutil.supportedprotocols stable
Yuya Nishihara <yuya@tcha.org> [Tue, 19 Jul 2016 21:16:44 +0900] rev 29611
hghave: fix typo of sslutil.supportedprotocols
Tue, 19 Jul 2016 03:29:53 -0700 rebase: turn rebase revs into set before filtering obsolete stable
Simon Farnsworth <simonfar@fb.com> [Tue, 19 Jul 2016 03:29:53 -0700] rev 29610
rebase: turn rebase revs into set before filtering obsolete When the inhibit extension from mutable-history is enabled, it attempts to iterate over the rebaseset to prevent the nodes being rebased from being marked obsolete. This happens at the same time as rebase's _filterobsoleterevs function trying to iterate over the rebaseset to figure out which ones are obsolete. The two of these iterating over the same revset generatorset cause a 'generator already executing' exception. This is probably a flaw in the revset implementation, since iterating over the same set twice should be supported. This regression was introduced in 5d16ebe7b14, since it changed _filterobsoleterevs to be called before the rebaseset was turned into a set(). For now let’s just make the rebaseset an actual set again before calling that function. This was caught by the inhibit tests. The relevant call stack from test-inhibit.t: File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 285, in _preparenewrebase obsrevs = _filterobsoleterevs(self.repo, rebaseset) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/inhibit.py", line 197, in _filterobsoleterevswrap r = orig(repo, rebasesetrevs, *args, **kwargs) File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 1380, in _filterobsoleterevs return set(r for r in revs if repo[r].obsolete()) File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 1380, in <genexpr> return set(r for r in revs if repo[r].obsolete()) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3079, in _iterordered val2 = next(iter2) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3417, in gen yield nextrev() File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3424, in _consumegen for item in self._gen: File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 71, in iterate cl = repo.changelog File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 319, in changelog revs = filterrevs(unfi, self.filtername) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 261, in filterrevs repo.filteredrevcache[filtername] = func(repo.unfiltered()) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/directaccess.py", line 65, in _computehidden hidden = repoview.filterrevs(repo, 'visible') File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 261, in filterrevs repo.filteredrevcache[filtername] = func(repo.unfiltered()) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 175, in computehidden hideable = hideablerevs(repo) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 33, in hideablerevs return obsolete.getrevs(repo, 'obsolete') File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/obsolete.py", line 1097, in getrevs repo.obsstore.caches[name] = cachefuncs[name](repo) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/inhibit.py", line 255, in _computeobsoleteset if getrev(n) not in blacklist: File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3264, in __contains__ return x in self._r1 or x in self._r2 File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3348, in __contains__ for l in self._consumegen(): File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3424, in _consumegen for item in self._gen: ValueError: generator already executing
Mon, 18 Jul 2016 15:59:08 +0100 commandserver: update comment about setpgid stable
Jun Wu <quark@fb.com> [Mon, 18 Jul 2016 15:59:08 +0100] rev 29609
commandserver: update comment about setpgid Now setpgid has 2 main purposes: better handling for terminal-generated SIGTSTP, SIGINT, and process-exit-generated SIGHUP. Update the comment to explain things more clearly.
Sun, 17 Jul 2016 22:55:47 +0100 chg: forward SIGINT, SIGHUP to process group stable
Jun Wu <quark@fb.com> [Sun, 17 Jul 2016 22:55:47 +0100] rev 29608
chg: forward SIGINT, SIGHUP to process group These signals are meant to send to a process group, instead of a single process: SIGINT is usually emitted by the terminal and sent to the process group. SIGHUP usually happens to a process group if termination of a process causes that process group to become orphaned. Before this patch, chg will only forward these signals to the single server process. This patch changes it to the server process group. This will allow us to properly kill processes started by the forked server process, like a ssh process. The behavior difference can be observed by setting SSH_ASKPASS to a dummy script doing "sleep 100" and then run "chg push ssh://dest-need-password-auth". Before this patch, the first Ctrl+C will kill the hg process while ssh-askpass and ssh will remain alive. This patch will make sure they are killed properly.
Mon, 18 Jul 2016 23:31:51 -0500 Added signature for changeset 519bb4f9d3a4 stable
Matt Mackall <mpm@selenic.com> [Mon, 18 Jul 2016 23:31:51 -0500] rev 29607
Added signature for changeset 519bb4f9d3a4
Mon, 18 Jul 2016 23:31:50 -0500 Added tag 3.9-rc for changeset 519bb4f9d3a4 stable
Matt Mackall <mpm@selenic.com> [Mon, 18 Jul 2016 23:31:50 -0500] rev 29606
Added tag 3.9-rc for changeset 519bb4f9d3a4
Mon, 18 Jul 2016 23:28:14 -0500 merge default into stable for 3.9 code freeze stable 3.9-rc
Matt Mackall <mpm@selenic.com> [Mon, 18 Jul 2016 23:28:14 -0500] rev 29605
merge default into stable for 3.9 code freeze
Mon, 18 Jul 2016 22:22:38 +0200 rbc: fix invalid rbc-revs entries caused by missing cache growth
Mads Kiilerich <madski@unity3d.com> [Mon, 18 Jul 2016 22:22:38 +0200] rev 29604
rbc: fix invalid rbc-revs entries caused by missing cache growth It was in some cases possible to end up writing to the cache file without growing it first. The range assignment in _setcachedata would append instead of writing at the requested position and thus write the new record in the wrong place. To fix this, we avoid looking up in too small caches, and when growing the cache, do it right before writing the new record to it so we know it has been done correctly.
Mon, 18 Jul 2016 22:21:42 +0200 rbc: test case for cache file not growing correctly, causing bad new entries
Mads Kiilerich <madski@unity3d.com> [Mon, 18 Jul 2016 22:21:42 +0200] rev 29603
rbc: test case for cache file not growing correctly, causing bad new entries
Mon, 18 Jul 2016 18:55:06 +0100 chg: handle EOF reading data block
Jun Wu <quark@fb.com> [Mon, 18 Jul 2016 18:55:06 +0100] rev 29602
chg: handle EOF reading data block We recently discovered a case in production that chg uses 100% CPU and is trying to read data forever: recvfrom(4, "", 1814012019, 0, NULL, NULL) = 0 Using gdb, apparently readchannel() got wrong data. It was reading in an infinite loop because rsize == 0 does not exit the loop, while the server process had ended. (gdb) bt #0 ... in recv () at /lib64/libc.so.6 #1 ... in readchannel (...) at /usr/include/bits/socket2.h:45 #2 ... in readchannel (hgc=...) at hgclient.c:129 #3 ... in handleresponse (hgc=...) at hgclient.c:255 #4 ... in hgc_runcommand (hgc=..., args=<optimized>, argsize=<optimized>) #5 ... in main (argc=...486922636, argv=..., envp=...) at chg.c:661 (gdb) frame 2 (gdb) p *hgc $1 = {sockfd = 4, pid = 381152, ctx = {ch = 108 'l', data = 0x7fb05164f010 "st):\nTraceback (most recent call last):\n" "Traceback (most recent call last):\ne", maxdatasize = 1814065152," " datasize = 1814064225}, capflags = 16131} This patch addresses the infinite loop issue by detecting continuously empty responses and abort in that case. Note that datasize can be translated to ['l', ' ', 'l', 'a']. Concatenate datasize and data, it forms part of "Traceback (most recent call last):". This may indicate a server-side channeledoutput issue. If it is a race condition, we may want to use flock to protect the channels.
Mon, 18 Jul 2016 11:27:27 -0700 sslutil: more robustly detect protocol support
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 18 Jul 2016 11:27:27 -0700] rev 29601
sslutil: more robustly detect protocol support The Python ssl module conditionally sets the TLS 1.1 and TLS 1.2 constants depending on whether HAVE_TLSv1_2 is defined. Yes, these are both tied to the same constant (I would think there would be separate constants for each version). Perhaps support for TLS 1.1 and 1.2 were added at the same time and the assumption is that OpenSSL either has neither or both. I don't know. As part of developing this patch, it was discovered that Apple's /usr/bin/python2.7 does not support TLS 1.1 and 1.2 (only TLS 1.0)! On OS X 10.11, Apple Python has the modern ssl module including SSLContext, but it doesn't appear to negotiate TLS 1.1+ nor does it expose the constants related to TLS 1.1+. Since this code is doing more robust feature detection (and not assuming modern ssl implies TLS 1.1+ support), we now get TLS 1.0 warnings when running on Apple Python. Hence the test changes. I'm not super thrilled about shipping a Mercurial that always whines about TLS 1.0 on OS X. We may want a follow-up patch to suppress this warning.
Mon, 11 Jul 2016 11:05:08 +0200 osutil: add darwin-only version of os.listdir using cffi
Maciej Fijalkowski <fijall@gmail.com> [Mon, 11 Jul 2016 11:05:08 +0200] rev 29600
osutil: add darwin-only version of os.listdir using cffi
Sun, 05 Jun 2016 12:29:08 +0900 url: drop support for proxying HTTP (not HTTPS) over CONNECT tunneling
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jun 2016 12:29:08 +0900] rev 29599
url: drop support for proxying HTTP (not HTTPS) over CONNECT tunneling It's been broken since cca59ef27e60, which made ui argument mandatory. I've tried several combinations of HTTP/HTTPS proxying on old/new Python versions, but I couldn't figure out how to reach this code path. Also, wrapping HTTP connection by SSLSocket seems wrong. My understanding is that self.realhostport is set by _generic_start_transaction() if HTTPS connection is tunneled. This patch removes proxy tunneling from httpconnection.connect() assuming that it was dead code from the beginning. Note that HTTPS over tunneling should be handled by httpsconnection class.
Sat, 21 May 2016 18:16:39 +0900 chgserver: rename private functions and variables of chgunixservicehandler
Yuya Nishihara <yuya@tcha.org> [Sat, 21 May 2016 18:16:39 +0900] rev 29598
chgserver: rename private functions and variables of chgunixservicehandler self.address has been reanmed to self._realaddress to clarify that it can be different from the address argument.
Sun, 22 May 2016 14:06:37 +0900 chgserver: refactor initialization of real/base addresses
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 14:06:37 +0900] rev 29597
chgserver: refactor initialization of real/base addresses Instead of overwriting self.address, calculate it from the address argument, which is the base address.
Sun, 22 May 2016 14:05:34 +0900 chgserver: reorder functions in chgunixservicehandler
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 14:05:34 +0900] rev 29596
chgserver: reorder functions in chgunixservicehandler This should make it slightly easier to follow the call path.
Sat, 21 May 2016 18:15:20 +0900 chgserver: use ui.debug() to print server debug messages
Yuya Nishihara <yuya@tcha.org> [Sat, 21 May 2016 18:15:20 +0900] rev 29595
chgserver: use ui.debug() to print server debug messages commandserver.log() is noop at this time because no client connection is established.
Sun, 05 Jun 2016 12:18:20 +0900 ssl: remove special case of web.cacerts=! from remoteui()
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jun 2016 12:18:20 +0900] rev 29594
ssl: remove special case of web.cacerts=! from remoteui() It was introduced by b76d8c641746, which is no longer necessary thanks to recent refactoring of sslutil including ef316c653b7f.
Sun, 17 Jul 2016 15:13:51 -0700 bundle2: store changeset count when creating file bundles
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 17 Jul 2016 15:13:51 -0700] rev 29593
bundle2: store changeset count when creating file bundles The bundle2 changegroup part has an advisory param saying how many changesets are in the part. Before this patch, we were setting this part when generating bundle2 parts via the wire protocol but not when generating local bundle2 files. A side effect of not setting the changeset count part is that progress bars don't work when applying changesets. As the tests show, this impacted clone bundles, shelve, backup bundles, `hg unbundle`, and anything touching bundle2 files. This patch adds a backdoor to allow us to pass state from changegroup generation into the unbundler. We store the number of changesets in the changegroup in this state and use it to populate the aforementioned advisory part parameter when generating the bundle2 bundle. I concede that I'm not thrilled by how state is being passed in changegroup.py (it feels a bit hacky). I would love to overhaul the rather confusing set of functions in changegroup.py with something that passes rich objects around instead of e.g. low-level generators. However, given the code freeze for 3.9 is imminent, I'd rather not undertake this endeavor right now. This feels like the easiest way to get the parameter added to the changegroup part.
Sun, 17 Jul 2016 15:10:30 -0700 util: implement a deterministic __repr__ on sortdict
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 17 Jul 2016 15:10:30 -0700] rev 29592
util: implement a deterministic __repr__ on sortdict `hg debugbundle` is calling repr() on bundle2 part params, which are now util.sortdict instances. Unfortunately, repr() doesn't appear to be deterministic for util.sortdict. So, we implement one. We include the type name because that's the common convention for __repr__ implementations. Having the type name in `hg debugbundle` is a bit ugly. But it's a debug command and I don't care enough to fix it.
Sun, 17 Jul 2016 14:51:00 -0700 bundle2: use a sorted dict for holding parameters
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 17 Jul 2016 14:51:00 -0700] rev 29591
bundle2: use a sorted dict for holding parameters An upcoming change that introduces a 2nd part parameter to a part reveals that `hg debugbundle` isn't deterministic because parameters are stored on n plain, unsorted dict. While we could change that command to sort before output, I think the more important underlying issue is that bundle2 reading is taking an ordered data structure and converting it to an unordered one. Plugging in util.sortdict() fixes that problem while preserving API compatibility. This patch also appears to shine light on the fact that we don't have tests verifying parts with multiple parameters roundtrip correctly. That would be a good thing to test (and fuzz)... someday.
Fri, 15 Jul 2016 13:41:34 -0700 wireproto: extract repo filtering to standalone function
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Jul 2016 13:41:34 -0700] rev 29590
wireproto: extract repo filtering to standalone function As part of teaching Mozilla's replication extension to better handle repositories with obsolescence data, I encountered a few scenarios where I wanted built-in wire protocol commands from replication clients to operate on unfiltered repositories so they could have access to obsolete changesets. While the undocumented "web.view" config option provides a mechanism to choose what filter/view hgweb operates on, this doesn't apply to wire protocol commands because wireproto.dispatch() is always operating on the "served" repo. This patch extracts the line for obtaining the repo that wireproto commands operate on to its own function so extensions can monkeypatch it to e.g. return an unfiltered repo. I stopped short of exposing a config option because I view the use case for changing this as a niche feature, best left to the domain of extensions.
Thu, 14 Jul 2016 19:16:46 -0700 url: add distribution and version to user-agent request header (BC)
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jul 2016 19:16:46 -0700] rev 29589
url: add distribution and version to user-agent request header (BC) As a server operator, I've always wanted to know what Mercurial version clients are running so I can track version adoption and make informed decisions about which versions of Mercurial to support in extensions. Unfortunately, there is no easy way to discern this today: the best you can do is look for high-level feature usage (e.g. bundle2) or sniff capabilities from bundle2 commands. And these things aren't changed frequently enough to tell you anything that interesting. Nearly every piece of software talking HTTP sends its version in the user agent. This includes web browsers, curl, and even Git. This patch adds the distribution name and version to the user-agent HTTP request header. We choose "Mercurial" for the distribution name because that seems appropriate. The version string comes from __version__. The value is inside parenthesis for a few reasons: * The version *may* contain spaces * Alternate forms like "Mercurial/<version>" imply structure and since the user agent should not be used by servers for protocol or feature negotiation/detection, we don't want to even give the illusion that the value should be parsed. A free form field is the most hostile to parsing. Flagging the patch as BC so it shows up in release notes. This change should be backwards compatible. But I wouldn't be surprised if a server somewhere is filtering on the exact old user agent string. So I want to make noise about this change.
Sat, 16 Jul 2016 14:48:58 +0900 commandserver: use SOMAXCONN as queue size of pending connections
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jul 2016 14:48:58 +0900] rev 29588
commandserver: use SOMAXCONN as queue size of pending connections The old value 5 was arbitrary chosen. Since there's no practical reason to limit the backlog, this patch simply uses SOMAXCONN as a value large enough.
Sat, 16 Jul 2016 14:46:31 +0900 commandserver: rename _serveworker() to _runworker()
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jul 2016 14:46:31 +0900] rev 29587
commandserver: rename _serveworker() to _runworker() "run" sounds more natural as the function does never listen for new connection.
Sun, 22 May 2016 13:53:32 +0900 commandserver: separate initialization and cleanup of forked process
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 13:53:32 +0900] rev 29586
commandserver: separate initialization and cleanup of forked process Separated _initworkerprocess() and _serverequest() can be reused when implementing a prefork service.
Sat, 21 May 2016 18:14:13 +0900 commandserver: unindent superfluous "if True" blocks
Yuya Nishihara <yuya@tcha.org> [Sat, 21 May 2016 18:14:13 +0900] rev 29585
commandserver: unindent superfluous "if True" blocks
Sun, 17 Jul 2016 19:48:04 +0530 pycompat: make pycompat demandimport friendly
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 17 Jul 2016 19:48:04 +0530] rev 29584
pycompat: make pycompat demandimport friendly pycompat.py includes hack to import modules whose names are changed in Python 3. We use try-except to load module according to the version of python. But this method forces us to import the modules to raise an ImportError and hence making it demandimport unfriendly. This patch changes the try-except blocks to a single if-else block. To avoid test-check-pyflakes.t complain about unused imports, pycompat.py is excluded from the test.
Mon, 18 Jul 2016 08:55:30 +0100 run-tests: make --local set --with-chg if --chg is used
Jun Wu <quark@fb.com> [Mon, 18 Jul 2016 08:55:30 +0100] rev 29583
run-tests: make --local set --with-chg if --chg is used --local should work with chg as well.
Mon, 18 Jul 2016 08:45:46 +0100 run-tests: allow --local to set multiple attributes
Jun Wu <quark@fb.com> [Mon, 18 Jul 2016 08:45:46 +0100] rev 29582
run-tests: allow --local to set multiple attributes This is to make the next patch easier to review. It does not change logic.
Sun, 17 Jul 2016 23:05:59 +0100 chg: add pgid to hgclient struct
Jun Wu <quark@fb.com> [Sun, 17 Jul 2016 23:05:59 +0100] rev 29581
chg: add pgid to hgclient struct The previous patch makes the server tell the client its pgid. This patch stores it in hgclient_t and adds a function to get it.
Sun, 17 Jul 2016 22:56:05 +0100 commandserver: send pgid in hello message
Jun Wu <quark@fb.com> [Sun, 17 Jul 2016 22:56:05 +0100] rev 29580
commandserver: send pgid in hello message See the next patches for why we need it.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip