Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 11:19:22 -0400] rev 29727
auditvfs: forward options property from nested vfs
This was breaking my ability to use treemanifests in bundlerepos, and
was deeply mysterious. We should probably just make the options
property a formal part of the vfs API, and make it a required
construction parameter. Sadly, I don't have time to dive into that
refactor right now.
Augie Fackler <augie@google.com> [Thu, 04 Aug 2016 14:13:35 -0400] rev 29726
bundlerepo: use supportedincomingversions instead of allsupportedversions
Since bundlerepo is really a pull-like operation, this is the correct
method to use here.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 13:07:58 -0400] rev 29725
bundlerepo: introduce method to find file starts and use it
This moves us to the modern iter() technique instead of the `while
True` pattern since it's easy. Factored out as a function because I'm
about to need this in a second place.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 13:09:50 -0400] rev 29724
bundlerevlog: use for loop over iterator instead of while True
The iter() builtin has a neat pattern where you give it a callable of
no arguments and a sentinel value, and you can then loop over the
function calls like a normal iterator. This cleans up the code a
little.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 13:09:24 -0400] rev 29723
bundlerepo: use for loop over iterator instead of while True
The iter() builtin has a neat pattern where you give it a callable of
no arguments and a sentinel value, and you can then loop over the
function calls like a normal iterator. This cleans up the code a
little.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 12:47:03 -0400] rev 29722
localrepo: jettison now-unused dirlog() method from localrepo
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 13:01:01 -0400] rev 29721
repair: build dirlogs using manifest, rather than repo shortcut method
As before, this was rarely used, so let's get rid of the convenience method.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 13:00:33 -0400] rev 29720
cmdutil: open dirlogs via manifest property, not via repo
This was a convenience method that was rarely used, so let's get rid of it.
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 16:34:30 -0400] rev 29719
wirepeer: rename confusing `source` parameter
It's named "url" everyplace else this method is defined, so let's be
consistent.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 13:44:17 +0200] rev 29718
develwarn: use the lock helper in local repo
We have a helper function to know if a lock is taken. When checking lock usage
we now use it instead of manually accessing the locks.
Yuya Nishihara <yuya@tcha.org> [Sat, 19 Mar 2016 17:19:03 -0700] rev 29717
debugextension: change "testedwith" to a list (BC)
It wasn't a list since the formatter couldn't process a list. We have no
such problem now and the -T option is experimental, so we can change it.
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jul 2016 22:07:34 +0900] rev 29716
debugextensions: unindent nested if
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jul 2016 22:06:13 +0900] rev 29715
debugextensions: give short name to util.version()
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jul 2016 21:59:43 +0900] rev 29714
debugextensions: simply keep testedwith variable as a list
There should be no need to distinguish [] and None.
Augie Fackler <augie@google.com> [Thu, 28 Jul 2016 16:27:35 -0400] rev 29713
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.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:32:19 +0530] rev 29712
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.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:21:14 +0530] rev 29711
py3: use unicode literals in crecord.py
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:15:39 +0530] rev 29710
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.
Maciej Fijalkowski <fijall@gmail.com> [Mon, 25 Jul 2016 15:10:52 +0200] rev 29709
mpatch: write a cffi version of mpatch.patches
Maciej Fijalkowski <fijall@gmail.com> [Fri, 22 Jul 2016 17:28:05 +0200] rev 29708
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
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 19:02:30 +0200] rev 29707
mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 16:25:14 +0200] rev 29706
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.
Maciej Fijalkowski <fijall@gmail.com> [Mon, 18 Jul 2016 15:14:40 +0200] rev 29705
mpatch: change Py_ssize_t to ssize_t in places that will be later copied
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 03 Aug 2016 22:07:52 -0700] rev 29704
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 16:23:26 +0200] rev 29703
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:52:11 +0200] rev 29702
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:39:55 +0200] rev 29701
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:34:03 +0200] rev 29700
tests: use 'legacy.exchange' option in various bundle1 tests
The new option will stay around. The experimental option was only meant to be
temporary.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:23:03 +0200] rev 29699
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 16:42:10 +0200] rev 29698
bundlerepo: also read the 'devel.legacy.exchange' config
Bundlerepo does its own bundle2 related logic.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 14:48:21 +0200] rev 29697
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 15:01:23 +0200] rev 29696
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 03 Aug 2016 14:24:09 +0200] rev 29695
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.
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:51:03 +0800] rev 29694
tests: update bugzilla link in test-issue1175.t
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 17:11:48 +0900] rev 29693
journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 17:07:29 +0900] rev 29692
formatter: add function to convert date tuple to appropriate format
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 16:56:26 +0900] rev 29691
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jul 2016 21:03:06 +0900] rev 29690
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.
Yuya Nishihara <yuya@tcha.org> [Sun, 31 Jul 2016 16:38:16 +0900] rev 29689
journal: use fm.hexfunc() to get full hash in JSON/template output (BC)
We generally do that.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Aug 2016 00:04:48 +0530] rev 29688
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 16:51:27 +0200] rev 29687
deprecation: enforce thew 'tr' argument of 'dirstate.write' (API)
Compatibility was meant to be drop after 3.9 is released.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 14:54:06 +0200] rev 29686
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:44:51 +0200] rev 29685
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 15:05:57 +0200] rev 29684
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.
Yuya Nishihara <yuya@tcha.org> [Sat, 23 Jul 2016 13:08:43 +0900] rev 29683
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.
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Jul 2016 23:12:09 +0900] rev 29682
url: drop compatibility wrapper of socket.create_connection()
It should be available on Python 2.6+.
Yuya Nishihara <yuya@tcha.org> [Sat, 14 May 2016 14:37:25 +0900] rev 29681
doc: remove double imports of inspect from hgmanpage.py
Yuya Nishihara <yuya@tcha.org> [Tue, 05 May 2015 10:51:34 +0900] rev 29680
merge: concatenate default conflict marker at parsing phase of .py
"+" operations are unnecessary.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:54:17 +0200] rev 29679
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:48 +0200] rev 29678
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:17 +0200] rev 29677
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:53:05 +0200] rev 29676
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:50:58 +0200] rev 29675
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.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 Aug 2016 03:50:42 +0200] rev 29674
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.
Augie Fackler <augie@google.com> [Mon, 01 Aug 2016 13:14:13 -0400] rev 29673
merge with stable
Augie Fackler <raf@durin42.com> [Sat, 01 Oct 2016 15:00:23 -0400] rev 29672
Added signature for changeset 149433e68974
Augie Fackler <raf@durin42.com> [Sat, 01 Oct 2016 15:00:18 -0400] rev 29671
Added tag 3.9.2 for changeset 149433e68974
Augie Fackler <augie@google.com> [Fri, 23 Sep 2016 14:37:15 -0400] rev 29670
py3: update test expectation on stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Fri, 23 Sep 2016 12:45:10 -0500] rev 29669
grep: rewrite help to better document current (confusing) behavior
timeless <timeless@mozdev.org> [Fri, 02 Sep 2016 20:15:37 +0000] rev 29668
crecord: properly handle files with No newline at eof (issue5268)
Yes, this bug was a single character with the wrong case...
Jun Wu <quark@fb.com> [Fri, 02 Sep 2016 15:20:59 +0100] rev 29667
annotate: pre-calculate the "needed" dictionary (issue5360)
The "needed" dict is used as a reference counter to free items in the giant
"hist" dict. However, currently it is not very accurate and can lead to
dropping "hist" items unnecessarily, for example, with the following DAG,
-3-
/ \
0--1--2--4--
The current algorithm will visit and calculate rev 1 twice, undesired. And
it tries to be smart by clearing rev 1's parents: "pcache[1] = []" at the
time hist[1] being accessed (note: hist[1] needs to be used twice, by rev 2
and rev 3). It can result in incorrect results if p1 of rev 4 deletes chunks
belonging to rev 0.
However, simply removing "needed" is not okay, because it will consume 10x
memory:
# without any change
% HGRCPATH= lrun ./hg annotate mercurial/commands.py -r d130a38 3>&2 [1]
MEMORY 49074176
CPUTIME 9.213
REALTIME 9.270
# with "needed" removed
MEMORY 637673472
CPUTIME 8.164
REALTIME 8.249
This patch moves "needed" (and "pcache") calculation to a separate DFS to
address the issue. It improves perf and fixes issue5360 by correctly reusing
hist, while maintaining low memory usage. Some additional attempt has been
made to further reduce memory usage, like changing "pcache[f] = []" to "del
pcache[f]". Therefore the result can be both faster and lower memory usage:
# with this patch applied
MEMORY 47575040
CPUTIME 7.870
REALTIME 7.926
[1]: lrun is a lightweight sandbox built on Linux cgroup and namespace. It's
used to measure CPU and memory usage here. Source code is available at
github.com/quark-zju/lrun.
Kevin Bullock <kbullock@ringworld.org> [Thu, 01 Sep 2016 14:01:43 -0500] rev 29666
Added signature for changeset ccd436f7db6d
Kevin Bullock <kbullock@ringworld.org> [Thu, 01 Sep 2016 14:01:37 -0500] rev 29665
Added tag 3.9.1 for changeset ccd436f7db6d
Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> [Thu, 01 Sep 2016 13:16:55 -0500] rev 29664
bundle2: localize handleoutput remote prompts
Code archaeology suggests that there was no good reason for this not to
be localized. 'remote: ' is already localized elsewhere.
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 31 Aug 2016 13:58:33 -0300] rev 29663
i18n-pt_BR: synchronized with a12d13eac513
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 25 Aug 2016 19:53:14 -0700] rev 29662
bundle2: fail faster when interrupted
Before this patch, bundle2 application attempted to consume remaining
bundle2 part data when the process is interrupted (SIGINT) or when
sys.exit is called (translated into a SystemExit exception). This
meant that if one of these occurred when applying a say 1 GB
changegroup bundle2 part being downloaded over a network, it may take
Mercurial *several minutes* to terminate after a SIGINT because the
process is waiting on the network to stream megabytes of data. This is
not a great user experience and a regression from bundle1. Furthermore,
many process supervisors tend to only give processes a finite amount of
time to exit after delivering SIGINT: if processes take too long to
self-terminate, a SIGKILL is issued and Mercurial has no opportunity to
clean up. This would mean orphaned locks and transactions. Not good.
This patch changes the bundle2 application behavior to fail faster
when an interrupt or system exit is requested. It does so by not
catching BaseException (which includes KeyboardInterrupt and
SystemExit) and by explicitly checking for these conditions in
yet another handler which would also seek to the end of the current
bundle2 part on failure.
The end result of this patch is that SIGINT is now reacted to
significantly faster: the active transaction is rolled back
immediately without waiting for incoming bundle2 data to be consumed.
This restores the pre-bundle2 behavior and makes Mercurial treat
signals with the urgency they deserve.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Aug 2016 14:58:49 +0900] rev 29661
revset: fix keyword arguments to go through optimization process
Before, a keyvalue node was processed by the last catch-all condition of
_optimize(). Therefore, topo.firstbranch=expr would bypass tree rewriting
and would crash if an expr wasn't trivial.
Mathias De Maré <mathias.demare@gmail.com> [Mon, 08 Aug 2016 16:47:42 +0200] rev 29660
help: add example of '[templates]' usage
V2:
- move from shortest() with minlength 8 to minlength 4
- mention [templates] in config.txt
- better describe the difference between [templatealias] and [templates]
V3:
- choose a better example template
Augie Fackler <augie@google.com> [Fri, 05 Aug 2016 16:25:15 -0400] rev 29659
exchange: correctly specify url to unbundle (issue5145)
This parameter is slightly confusingly named in wireproto, so it got
mis-specified from the start as 'push' instead of the URL to which we
are pushing. Sigh. I've got a patch for that which I'll mail
separately since it's not really appropriate for stable.
Fixes a regression in bundle2 from bundle1.
Durham Goode <durham@fb.com> [Mon, 01 Aug 2016 17:38:01 -0700] rev 29658
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.
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:53:46 +0800] rev 29657
osx: update bugzilla link in readme
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:50:25 +0800] rev 29656
win32: update link to mailing list in readme
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:50:06 +0800] rev 29655
win32: update wiki link in mercurial.ini
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 19:49:07 +0800] rev 29654
debian: update source URL in copyright file
Anton Shestakov <av6@dwimlabs.net> [Thu, 04 Aug 2016 10:42:03 +0800] rev 29653
help: update link to wiki/CommandServer
Augie Fackler <raf@durin42.com> [Mon, 01 Aug 2016 12:37:25 -0400] rev 29652
Added signature for changeset 299546f84e68
Augie Fackler <raf@durin42.com> [Mon, 01 Aug 2016 12:37:23 -0400] rev 29651
Added tag 3.9 for changeset 299546f84e68
Augie Fackler <augie@google.com> [Mon, 01 Aug 2016 12:11:56 -0400] rev 29650
merge with i18n
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.
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
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.
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.
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.
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
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Aug 2016 08:27:22 +0900] rev 29643
i18n-ja: synchronized with 6fd751fa58d3
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().
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.
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.
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
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.
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
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.
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.
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.
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
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.