Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 15:05:11 +0530] rev 32914
py3: use pycompat.strkwargs() to convert kwargs keys to str before passing
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:53:25 +0530] rev 32913
py3: use '%d' instead of '%s' for integers
Python 3 does not let you use '%s' for integers.
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:39:10 +0530] rev 32912
py3: pass the path in hg.repository() as bytes
This make test-ancestor.py pass on Python 3.
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:38:02 +0530] rev 32911
py3: pass range() into list() to get one explicitly
range() on python 3 returns a generator whereas on python 2 returns a list. So
to get a list on python 3, we passed it into list()
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2017 00:12:38 +0200] rev 32910
check-concurrency: expose the feature as 'concurrent-push-mode'
We move the feature to a proper configuration and document it. The config goes
in the 'server' section because it feels like something the server owner would
want to decide. We pick and open field because it seems likely that other
checking levels will emerge in the future. (eg: server like the mozilla-try
server will likely wants a "none" value)
The option name contains 'push' since this affects 'push' only. The option value
'check-related' is preferred over one explicitly containing 'allow' or 'deny'
because the client still have a strong decision power here. Here, the server is
just advising the client on the check mode to use.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 22:57:31 -0700] rev 32909
exchange: switch to usual way of testing for bundle2-ness
We used safehasattr() in one place, but we use isinstance() for this
everywhere else, so switch to the latter.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 21:57:22 -0400] rev 32908
setup: update a comment that blamed py26 for a Windows workaround
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:55:34 -0400] rev 32907
i18n: drop a py25 conditional
I'm not sure how to test this one. `make update-pot` spews all kinds of
warnings, though it did before this change too.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:49:32 -0400] rev 32906
perf: ensure HGRCPATH is exported on Windows
After dropping the garbage collector hack, `hg perfstartup` started yelling
about not being able to import the evolve extension, which I have in my user
config. Launching `env` shows that an empty HGRCPATH isn't exported to the
environment. Since `env` doesn't quote, I have no idea if the variable is
trimmed, but Mercurial doesn't complain when processing it.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:35:45 -0400] rev 32905
test-status: glob fixes for Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 18:42:03 -0400] rev 32904
plan9: drop py26 hacks
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 12:25:23 +0900] rev 32903
revset: fix negative ancestor spec to not return changectx objects
The order was unstable because of this.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 01 May 2017 05:57:36 +0200] rev 32902
obsolete: use ProgrammingError over assert for volatile set registration
We have ProgrammingError now.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:13:44 -0700] rev 32901
strip: remove a redundant setting of hookargs
bundle2.applybundle() will set both 'source' and 'url'.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:38:14 -0700] rev 32900
unbundle: move streamclone error case away from bundle[12] cases
The bundle1 and bundle2 cases are more similar, and having the
streamclone case in between is distracting.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:36:43 -0700] rev 32899
bundle2: use "else" instead of checking condition again
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 09:37:22 -0700] rev 32898
wireproto: update reference to deleted addchangegroup()
Thanks to Yuya for catching this.
Boris Feld <boris.feld@octobus.net> [Thu, 15 Jun 2017 13:02:58 +0200] rev 32897
template: add predecessors template
Add a 'predecessors' template that returns the list of all closest known
predecessors for a changectx. The elements of the list are row changectx node id
formatted by default as short nodes.
The "closest predecessors" are the first locally known revisions encountered
while, walking predecessors markers. For example:
1) If a (A, (B)) markers exists and both A and B are locally known A is a
closest predecessors of B.
2) If a (A, (B)) and (B, (C)) markers exists and only A and C are known
locally, A will be the closest precursors of C.
This logic respect repository filtering. So hidden revision will be skipped by
this logic unless --hidden is specified. Since we only display the visible
predecessors, this template will not display anything in most case. It makes a
good candidate for inclusion in the default log output.
I added a new test-file for testing the precursors in various scenarios. This
test file will also be used for the successors template.
A new "obsutil" module has been added to start gathering utility function
outside of the large obsolete.py module.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 20:29:45 +0900] rev 32896
commit: select template by spec.ref name
And load all templates defined in [committemplate] since the selected
template is no longer be named as 'changeset'.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 15:28:29 +0900] rev 32895
commit: do not look up committemplate in template paths (BC)
From 5375ba75df40 and de5cee8ba088, I don't think the current behavior is
intended. Commit templates should be processed as literal templates.
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 17:03:59 +0900] rev 32894
formatter: always store a literal template unnamed
Now spec.ref should be '' if spec.tmpl is specified. Since spec.ref is the
option to select the initial template to be rendered, it doesn't make sense
to store the given literal template as spec.ref.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 20:14:55 +0900] rev 32893
formatter: load templates section like a map file
Since a map file has another level to select a template (spec -> mapfile
-> topic), this isn't exactly the same as how a map file works. But I believe
most users would expect the new behavior.
A literal template is stored as an unnamed template so that it will never
conflict with the templates defined in [templates] section.
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 17:41:05 +0900] rev 32892
test-command-template: rewrite recursion tests by using a map file
A literal template will be unnamed soon, so no recursion will be practically
made by using -T option.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:56:47 +0900] rev 32891
templater: add simple interface for unnamed template (API)
This provides a simpler API for callers which don't need full templating
stack. Instead of storing the given template as the name specified by topic,
use '' as the default template to be rendered.
Augie Fackler <augie@google.com> [Wed, 14 Jun 2017 20:56:34 -0400] rev 32890
ui: add support for a tweakdefaults knob
We've been talking for years about a one-stop config knob to opt in to
better behavior. There have been a lot of ideas thrown around, but
they all seem to be too complicated to get anyone to actually do the
work.. As such, this patch is the stupidest thing that can possibly
work in the name of getting a good feature to users.
Right now it's just three config settings that I think are generally
uncontroversial, but I expect to add more soon. That will likely
include adding new config knobs for the express purpose of adding them
to tweakdefaults.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 15:13:18 -0700] rev 32889
localrepo: remove unused addchangegroup() (API)
This completes the cleanup started in d3775db748a0 (localrepo: move
the addchangegroup method in changegroup module, 2014-04-01).
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:47:54 -0700] rev 32888
changegroup: rename "dh" to the clearer "deltaheads"
We have a lot of frequently used abbreviations, but this is not one of
them.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:42:41 -0700] rev 32887
changegroup: rename "srccontent" to "cgnodes"
It's the list of nodes in the incoming changegroup, so "cgnodes" made
more sense to me.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:42:35 -0700] rev 32886
revlog: rename list of nodes from "content" to "nodes"
It seems like the reason for "content" is that the variable contains
the nodes that the changegroup "contains", see e234eda20984 (revlog:
make addgroup returns a list of node contained in the added source,
2012-01-13), but "nodes" seems much clearer.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:25:41 -0700] rev 32885
revlog: delete obsolete comment
The comment seems to refer to code that was deleted in 557988c691d1
(revlog.addgroup(): always use _addrevision() to add new revlog
entries, 2010-10-08).
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:23:21 -0700] rev 32884
revlog: delete dead assignment in addgroup()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 03:01:22 +0530] rev 32883
pycompat: move the queue related definitions below queue import
This helps in understanding why empty and queue are there.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 02:48:17 +0530] rev 32882
pycompat: move multiline comments above a function to function doc
pycompat.py is unorganized and looks ugly. Next few patches will try to make it
look more cleaner so that adding more code is easy and reading code also.
This patch moves the multiline comments above functions to function docs. While
moving, I improved the comments and make them better suitable for func doc.
While I was here I drop a unrequired and misplaced comment.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:46:47 +0530] rev 32881
py3: replace dict.iterkeys() with iter(dict)
dict.iterkeys() does not exists on Python 3.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:28:23 +0530] rev 32880
py3: explicitly convert dict.values() to a list on py3
dict.values() returns a dict_values() object, so we need to pass it into
list() explicitly to get one.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:24:31 +0530] rev 32879
py3: alias long to int and xrange to range in test-ancestor.py on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 00:36:17 +0530] rev 32878
py3: add a new bytesurl() to convert a str url into bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 00:32:52 +0530] rev 32877
py3: add a new strurl() which will convert a bytes url to str
Matt Harbison <matt_harbison@yahoo.com> [Thu, 15 Jun 2017 21:59:42 -0400] rev 32876
killdaemons: fix WaitForSingleObject() error handling logic on Windows
The error return is not 0 for this method, so _check() was doing nothing when an
error occurred. This forces the error path, much like the check for
OpenProcess().
The only unhandled return is now WAIT_ABANDONED, but I don't see how that could
happen in this case.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 06 Jun 2017 20:18:06 -0400] rev 32875
killdaemons: explicitly set the ctypes signatures
When I tried importing util.posixfile to work around removing a file opened by
another process on Windows, it brought along the declarations in win32.py, which
broke the error handling[1]. It doesn't seem worth hacking killdaemons[2] just
to isolate these declarations in win32.py, so just declare them here to prevent
any future issues. (win32.py mentions the declarations are required by pypy.)
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097905.html
[2] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097907.html
Matt Harbison <matt_harbison@yahoo.com> [Sun, 07 May 2017 14:58:40 -0400] rev 32874
hghave: enable 'serve' on Windows
I've been using a local hghaveaddon.py to enable this for a couple of months
with reasonable success, and 'killdaemons' is already enabled on Windows.
There's one failure[1] in test-http-proxy.t that this adds, which I can't figure
out.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 11:00:29 -0400] rev 32873
contrib: add a ratchet for tests in Python 3
This gives us an easy way to automatically update passing tests in Python 3.
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 10:59:48 -0400] rev 32872
contrib: check in a whitelist of passing tests in Python 3
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 13:13:36 -0400] rev 32871
tests: try and fail more gracefully with broken unicode escapes
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 12:49:13 -0400] rev 32870
md5sum: adapt for python 3 support
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 11:10:51 -0700] rev 32869
profiling: allow configuring minimum display threshold for hotpath
statprof.display_hotpath() accepts a "limit" function to choose the
minimum threshold for samples to display. The default is 0.05, which
means you don't need individual items contributing less than 5%.
I had a need to adjust this threshold. We already have a config
option for it. So let's reuse it.
check-config.py doesn't like having multiple defaults for the
ui.configwith() calls. The behavior is obviously correct. I'm
not sure if it is worth teaching check-config.py how to ignore
this. So I've just accepted the new output.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 11:04:46 -0700] rev 32868
config: document profiling.show{min,max}
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:58:36 -0700] rev 32867
check-config: look for ui.configwith
We previously weren't looking for this config helper. And, surprise,
profiling.py references config options without docs.
If I tried hard enough, I could have combined the regexps using a
positive lookbehind assertion or something. But I didn't want to make
my brain explode.
At some point, we should probably do this linting at the tokenizer or
ast layer. I'm not willing to open that can of worms right now.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:38:19 -0700] rev 32866
check-config: use named groups in regexp
In preparation for making this regexp a bit more complicated.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:36:23 -0700] rev 32865
check-config: use compiled regexp
And split the regexp across multiple lines to make it easier to read.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:46:39 -0700] rev 32864
tests: add test coverage for check-config
We didn't have explicit test coverage before. I broke check-config.py
as part of writing patches and was lucky I realized it.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 22:57:20 -0700] rev 32863
exchange: use context manager for bundle1 unbundling
The lazy locking is not used for bundle1, so using a regular context
manager is clearer.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 14:47:18 -0700] rev 32862
unbundle: use context manager for transaction
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 17:00:32 -0700] rev 32861
clonebundle: use context managers for lock and transaction
Yuya Nishihara <yuya@tcha.org> [Tue, 11 Apr 2017 21:38:24 +0900] rev 32860
changeset_templater: render template specified by templatespec tuple
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:29:41 +0900] rev 32859
formatter: render template specified by templatespec tuple
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:07:00 +0900] rev 32858
formatter: put topic in templatespec tuple
This will allow us to change the initial template reference depending on how
the template is looked up. For example,
-Tdefault => (ref='changeset', tmpl=None, mapfile='map-cmdline.default')
-T'{rev}' => (ref='', tmpl='{rev}', mapfile=None)
A literal template given by -T option will be stored as an unnamed template,
which will free up the template namespace so that we can load named templates
from [templates] section of user config.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:02:47 +0900] rev 32857
cmdutil: pass templatespec tuple directly to changeset_templater (API)
A fewer number of arguments should be better.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 18:48:38 +0900] rev 32856
formatter: wrap (tmpl, mapfile) by named tuple
I'm going to add more options to the templatespec tuple.
cmdutil.logtemplatespec() is just an alias now, but it will be changed to
a factory function later.
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 18:42:03 +0900] rev 32855
cmdutil: factor out helper to create changeset_templater with literal template
changeset_templater has lots of arguments, but most callers only need to
specify a literal template 'tmpl'.
"hg debugtemplate" has no diff option, which means 'opts' were effectively {},
so dropped opts.