Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:54:52 -0700] rev 26209
hgweb: don't access self.repo during request processing
We want all repository accesses to go through requestcontext.repo
so the request is isolated from the application.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:44:36 -0700] rev 26208
hgweb: extract _getview to own function
While we're refactoring code, we might as well remove a method that
doesn't need to be a method.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:41:02 -0700] rev 26207
hgweb: regenerate web substitutions when repo is refreshed
Previously, changes to the configuration would not be picked up by a
running server. That feels like a bug. Regenerate the web substitutions
table when the repository changes.
Durham Goode <durham@fb.com> [Wed, 09 Sep 2015 09:07:27 -0700] rev 26206
add: pass full=False to dirstate walk
Previously cmdutil.add would call wctx.walk(), which under the hood calls
dirstate.walk with full=True. This means it returns all of the clean files
(which we don't need when computing the add set), as well as the unclean files.
This results in 1) a lot more work being done and 2) this code path
circumventing the hgwatchman extension, resulting in worse performance in
hgwatchman environments ('hg add .' went from 9s to 1.8s).
Matt Mackall <mpm@selenic.com> [Wed, 09 Sep 2015 12:40:57 -0700] rev 26205
hgweb: drop unused import
timeless@mozdev.org [Tue, 08 Sep 2015 20:44:18 -0400] rev 26204
obsolete: improve English of successorssets
timeless@mozdev.org [Tue, 08 Sep 2015 20:30:01 -0400] rev 26203
histedit: fix grammar in cleanupnode comment
timeless@mozdev.org [Tue, 08 Sep 2015 15:32:20 -0400] rev 26202
hgweb.server: fix _httprequesthandlerssl help text
timeless@mozdev.org [Tue, 08 Sep 2015 15:32:20 -0400] rev 26201
util: capitalize Python in MBTextWrapper._wrap_chunks comment
timeless@mozdev.org [Tue, 08 Sep 2015 14:56:29 -0400] rev 26200
hgweb: remove ErrorResponse.message
BaseException.message is deprecated:
https://www.python.org/dev/peps/pep-0352/#retracted-ideas
timeless@mozdev.org [Fri, 04 Sep 2015 05:57:58 -0400] rev 26199
manifest: switch add() to heapq.merge (available in Py2.6+)
timeless@mozdev.org [Fri, 04 Sep 2015 05:54:35 -0400] rev 26198
archival: drop self.filename - deprecated in py2.6
timeless@mozdev.org [Sun, 30 Aug 2015 17:50:55 -0400] rev 26197
templater: fix get English
timeless@mozdev.org [Sun, 30 Aug 2015 18:54:31 -0400] rev 26196
help: fix makeitemsdoc English description
timeless@mozdev.org [Tue, 08 Sep 2015 11:35:22 -0400] rev 26195
help: filesets show hg resolve command
timeless@mozdev.org [Tue, 08 Sep 2015 11:30:01 -0400] rev 26194
help: filesets show hg status command
timeless@mozdev.org [Tue, 08 Sep 2015 13:22:01 -0400] rev 26193
hgmanpage: fix grammar
remove 's's from places where they don't belong
insert the preposition 'in'
timeless@mozdev.org [Tue, 08 Sep 2015 12:54:39 -0400] rev 26192
check-seclevel: fix file description grammar
Durham Goode <durham@fb.com> [Tue, 08 Sep 2015 11:39:52 -0700] rev 26191
profiling: allow logging profile to the blackbox
This allows specifying '--config profiling.output=blackbox' which will log the
profile output to the blackbox (if enabled). This is useful for doing profiling
on the server since it allows us to record the command, it's result, any
exceptions, and it's profile, all in one spot. And we get log rotation for
free.
timeless@mozdev.org [Fri, 04 Sep 2015 11:30:38 -0400] rev 26190
bookmark: improve ambiguous documentation for rename
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Sep 2015 11:28:48 -0700] rev 26189
ui: change default path fallback mechanism (
issue4796)
The previous paths API code always fell back to the default path. This
was wrong because if a requested path doesn't exist, that should error.
Only if no path was requested should we fall back to the default.
As part of implementing the test case for issue 4796, it was discovered
that the "repository does not exist" error message raised by
localrepository.__init__ wasn't being seen because the paths API
validates paths before localrepository.__init__ was being called.
The exception and error message from localrepository.__init__ has
been introduced to getpath(). This necessitated rewriting
expandpath() both to catch the exception and to have proper
default fallback.
This code is more complicated than I'd like. But making all tests pass
was a big chore. As more code moves to getpath(), there will likely be
opportunities to improve things a bit.
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Sep 2015 21:58:17 +0900] rev 26188
templater: catch regexp error at sub() function
This patch splits re.sub() into re.compile() and sub() so that it can
distinguish which argument causes re.error.
Yuya Nishihara <yuya@tcha.org> [Tue, 08 Sep 2015 23:00:44 +0900] rev 26187
graphmod: compute slow revset query once prior to reachableroots (
issue4782)
Because revsets query is evaluated lazily, "list(revs)" may take long for
complicated query. So we shouldn't iterate revs many times. This patch is the
easiest workaround for the
issue4782. We could introduce more aggressive
caching, but it wouldn't be as fast as the simple baseset operation.
Gregory Szorc said "this makes `hg wip` on my Firefox clone ~4x faster than
3.5.1 (~6.5s to ~1.5s). This is after a regression in @ to ~45s."
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 11:35:40 -0700] rev 26186
profiling: add config option for enabling profiling
Previously you could only enable profiling via the --profile option. This is
awkward when trying to debug a server side operation. Let's add a config option
to enable profiling.
In the future, this could be extended to allow profiling a certain percentage of
operations (and potentially reporting that information to an external service).
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 11:31:44 -0700] rev 26185
blackbox: add pid to output
This adds the process id to the line header for the blackbox output. This is
useful for distinguishing processes when using the blackbox on a server and many
processes are writing to the blackbox at once.
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 17:08:35 -0700] rev 26184
exchange: allow fallbackheads to use lazy set behavior
The common ancestor set implementation was made lazy a couple years ago, but
this piece of code still required processing the entire repo by putting set()
around the lazy set. The code was introduced in
5653f2d166ea, a year before the
lazy ancestor set was added.
Dropping the set() shaves 3.5 seconds off of 'push -r' in repos with hundreds of
thousands of commits.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:38:51 -0700] rev 26183
hgweb: move templater instantiation to requestcontext
This code needs to access a lot of config options. All our config
lookups have moved to requestcontext. It makes sense to move this
function there.
timeless@mozdev.org [Wed, 02 Sep 2015 13:39:46 -0400] rev 26182
help/config: make defaults consistent
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:32 -0400] rev 26181
help/config: reword allow_push to fix grammar
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:04 -0400] rev 26180
help/config: change local_hostname help style
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:45 -0400] rev 26179
help/config: include check values
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:22 -0400] rev 26178
help/config: simplify default text
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:55 -0400] rev 26177
help/config: add trailing periods
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:22 -0400] rev 26176
help/config: alias, ui.mergemarkertemplate add period for etc.
Anton Shestakov <av6@dwimlabs.net> [Fri, 04 Sep 2015 21:12:07 +0800] rev 26175
tests: fix css-related test-hgweb.t breakage from
93258d53ec35
timeless@mozdev.org [Thu, 03 Sep 2015 00:22:17 -0400] rev 26174
help/scripting: fix HGENCODING indentation
timeless@mozdev.org [Fri, 28 Aug 2015 13:57:20 -0400] rev 26173
test-strip: fix spelling of initialization (en-US)
timeless@mozdev.org [Wed, 02 Sep 2015 02:02:58 -0400] rev 26172
help/config: add blank lines
timeless@mozdev.org [Fri, 28 Aug 2015 13:52:49 -0400] rev 26171
histedit: fix English (en-US)
timeless@mozdev.org [Thu, 03 Sep 2015 17:06:27 -0400] rev 26170
minirst: handle edge in hunting for parents
test for "hg help -c config" in help config
``section``
-----------
section text
``def1``
definition of def1
$ hg help scope.def1
should list this paragraph, but not section text below...
section text
``def2``
definition of def2
$ hg help scope.def2
should list this paragraph, but not section text below...
section text
$ hg help scope.section should show everything from the first
section text to this last line.
``section2``
------------
timeless@mozdev.org [Fri, 04 Sep 2015 05:42:21 -0400] rev 26169
help: config indent committemplate.changeset section
timeless@mozdev.org [Wed, 02 Sep 2015 16:56:04 -0400] rev 26168
test-merge-tools: include /usr/sbin in path for sysctl (
issue4813)
/bin/sh expects to be able to reach sysctl via path (it lives in /usr/sbin)
Matt Mackall <mpm@selenic.com> [Thu, 03 Sep 2015 18:32:17 -0500] rev 26167
merge with stable
timeless@mozdev.org [Wed, 02 Sep 2015 16:07:35 -0400] rev 26166
import-checker: accept .pyc and .pyo files (
issue4812)
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
$ ls '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6'/BaseHTTPServer.py*
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.pyc
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.pyo
liscju <piotr.listkiewicz@gmail.com> [Tue, 01 Sep 2015 21:37:51 +0200] rev 26165
rebase: fix warning about ignoring tool option on rebase continue (
issue4698)
Before this patch rebase --continue with specified --tool option outputs
warnings "tool option will be ignored". It is false statement because
in case of any merge conflicts it uses specified tool to resolve it.
This patch makes this warning appears only when user specified --tool
when running rebase --abort , in this case tool doesn't have any
sense
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:39:29 -0700] rev 26164
hgweb: create websubtable on requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:28:22 -0700] rev 26163
hgweb: move templatepath to requestcontext
This does change behavior in that the templatepath could change during
the lifetime of the server. But everything else can change, I don't see
why template paths can't.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:40:33 -0700] rev 26162
hgweb: extract web substitutions table generation to own function
It doesn't use any state in hgweb except for the repo instance.
Move it to a standalone function.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:32:16 -0700] rev 26161
hgweb: remove hgweb.configbool
It is redundant with requestcontext.configbool.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:30:39 -0700] rev 26160
hgweb: move additional state setting outside of refresh
We want refresh() to only be about refreshing repository
instances. This state doesn't belong in requestcontext
because it is shared across multiple threads.
timeless@mozdev.org [Wed, 02 Sep 2015 23:50:45 -0400] rev 26159
commands: support hg help scripting.HGPLAIN
keywords are lowercased within help/minirst...
timeless@mozdev.org [Wed, 02 Sep 2015 15:19:05 -0400] rev 26158
run-tests: use $HGTEST_RUN_TESTS_PURE
test-run-tests and test-hghave call run-tests;
if you don't have a working build environment, and you are trying
to use --pure, then if they don't use --pure or --with-hg,
they'll break.
timeless@mozdev.org [Wed, 02 Sep 2015 15:12:08 -0400] rev 26157
minirst: don't treat top level item as children of last item (
issue4803)
test for "hg help -c config" in help config
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Sep 2015 22:05:58 -0700] rev 26156
scmutil.readonlyvfs: implement join
Required in an upcoming patch.
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Sep 2015 22:05:23 -0700] rev 26155
localrepo: move dirstate validate function to class scope
This will allow the function to be referred to by subclasses, as required for
upcoming patches.
Durham Goode <durham@fb.com> [Thu, 03 Sep 2015 10:29:42 -0700] rev 26154
convert: remove restriction on multiple --rev in hg source
Multiple --rev args on convert is a new feature, and was initially disabled for
all sources. It has since been enabled on git sources, and this patch enables it
on mercurial sources.
Anton Shestakov <av6@dwimlabs.net> [Fri, 04 Sep 2015 02:51:57 +0800] rev 26153
monoblue: add a margin for help text container
Anton Shestakov <av6@dwimlabs.net> [Thu, 03 Sep 2015 23:46:31 +0800] rev 26152
gitweb: add a margin for help text container
Anton Shestakov <av6@dwimlabs.net> [Thu, 03 Sep 2015 22:25:16 +0800] rev 26151
monoblue: fix page subtitle on help pages
Matt Mackall <mpm@selenic.com> [Thu, 03 Sep 2015 12:19:43 -0500] rev 26150
hgweb: use latest mtime for caching tag (
issue4814)
Previously, we were using the last mtime we saw when reporting the
HTTP cache etag. When we added bookmarks to the end of the list of
files checked, unchanged or missing bookmarks would keep the client
cache from being invalidated.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:21:45 -0700] rev 26149
hgweb: initialize repostate to None
The initial value is irrelevant since refresh() compares it to
a tuple of tuples of file mtime and size. None != tuple and
None is a better default value than a tuple containing irrelevant
values.
Augie Fackler <augie@google.com> [Wed, 26 Aug 2015 10:59:09 -0400] rev 26148
debian: switch to using debhelper and dh_python2 to build debs
This is a much larger commit than I'd like, but I honestly don't see a
good way to break it up and leave things working. Summary:
We now use debian/rules with debhelper to build our debs. This is much
more standard, and means we use dh_python2 to do things like handle
leaving .pyc files out of the built debs.
The resulting package is split into mercurial and mercurial-common,
with the former being the hg stub and all the native .sos, and the
latter being basically everything else.
builddeb and dockerdeb are updated to use the new system. The old way
(using dpkg by hand) breaks with the above changes because
debian/control no longer contains a version string (that's now guessed
from the phony changelog.)
Tests are updated to assert that the right files end up in the right
debs.
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:08:29 -0400] rev 26147
test-debian-packages: new test for testing construction of debian packages
Augie Fackler <augie@google.com> [Mon, 31 Aug 2015 22:44:57 -0400] rev 26146
test-docker-packaging: test packages built using docker
For now this only tests debian packages, but it could easily be
extended to also test rpms.
Augie Fackler <augie@google.com> [Mon, 31 Aug 2015 22:43:33 -0400] rev 26145
hghave: correct test for debhelper
debhelper exits with a nonzero status when you pass --help, at least
on jessie.
Augie Fackler <augie@google.com> [Tue, 01 Sep 2015 15:47:33 -0400] rev 26144
bundle2: don't try to recover from a GeneratorExit (
issue4785)
GeneratorExit means the other end of the conversation has already
stopped listening, so don't try and yield out error
information. Instead, just let the GeneratorExit propagate normally.
This should resolve esoteric issues observed with servers that have
aggressive timeouts waiting for data to send to clients logging
internal Python errors[0]. This has been observed with both gunicorn's
gevent worker model and with scm-manager's built-in webserver (which
itself is something sitting inside jetty.)
0: Exception RuntimeError: 'generator ignored GeneratorExit' in <generator object getchunks at 0x
7fd2f6c586e0> ignored
Durham Goode <durham@fb.com> [Tue, 01 Sep 2015 16:46:05 -0700] rev 26143
revset: fix resolving strings from a list
When using multiple revsets that get optimized into a list (like
hg log -r r1235 -r r1237 in hgsubversion), the revset list code was assuming the
strings were resolvable via repo[X]. hgsubversion and other extensions override
def stringset() to allow processing different revision identifiers (such as
r1235 or g<githash>), and there for the _list() implementation was circumventing
that resolution.
The fix is to just call stringset(). The default implementaiton does the same
thing that _list was already doing (namely repo[X]).
This has always been broken, but it was recently exposed by
4ee4f7415095 which
made "--rev X --rev Y" produce a combined revset "X | Y".
Yuya Nishihara <yuya@tcha.org> [Mon, 31 Aug 2015 23:29:15 +0900] rev 26142
dispatch: error out on invalid -R path even if optionalrepo (
issue4805) (BC)
Before this patch, repo could be set to None for wrong -R. It's okay for
commands that can reject repo=None, but the command server have a problem
because:
- it accepts repo=None for "unbound" mode
- and it reenters dispatch() where repo object is created for cwd by default
Test outputs are changed because the error is detected earlier. I think new
message is better than ".hg not found".
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 16:38:52 +0900] rev 26141
test-ssh: remove superfluous triple slashes from absolute path test
Because pwd should start with "/", "/`pwd`" is enough to make absolute path.
Kevin Bullock <kbullock@ringworld.org> [Wed, 02 Sep 2015 11:52:24 -0500] rev 26140
vagrant: update to official Debian 8.1 base box
Debian now rolls their own official Vagrant base boxes, so use that. At
the same time, we're updating from Debian 7.4 (wheezy) to 8.1 (jessie),
and switching from 32-bit to 64-bit (Debian does not provide 32-bit base
boxes).
Augie Fackler <augie@google.com> [Tue, 01 Sep 2015 14:41:41 -0400] rev 26139
buildrpm: mkdir -p two needed directories (
issue4779)
Without this, building RPMs can fail.
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 17:09:00 -0500] rev 26138
merge with stable
Augie Fackler <augie@google.com> [Mon, 31 Aug 2015 22:44:20 -0400] rev 26137
hghave: use subprocess instead of os.popen
os.popen was deprecated in Python 2.6 in favor of subprocess, so let's
move into the future.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:12:52 -0700] rev 26136
hgweb: move archive related attributes to requestcontext
As part of this, "archive_specs" was renamed to "archivespecs" to align
with naming conventions.
"archive_specs" didn't technically need to be moved from hgweb. But it
seemed to make sense to have all the archive code in the same class.
As part of this, hgweb.configlist is no longer used, so it was deleted.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 15:02:41 -0700] rev 26135
hgweb: move some config options to requestcontext
Various config options from the repository were stored on the
hgweb instance. While unlikely, there could be race conditions between
a new request updating these values and an in-flight request seeing both
old and new values, leading to weird results.
We move some of options/attributes from hgweb to requestcontext.
As part of this, we establish config* helpers on requestcontext. As
part of the move, we changed int() casts to configint() calls. The
int() usage likely predates the existence of configint().
We also removed config option updating from once every refresh to every
request. I don't believe obtaining config options is expensive enough to
warrant only doing when the repository has changed.
The excessive use of object.__setattr__ is unfortunate. But it will
eventually disappear once the proxy is no longer necessary.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 14:59:36 -0700] rev 26134
hgweb: establish class for holding per request context
Currently, hgweb applications have many instance variables holding
mutated state. This is somewhat problematic because multiple threads
may race accessing or changing this state.
This patch starts a series that will add more thread safety to
hgweb applications. It will do this by moving mutated state out
of hgweb and into per-request instances of the newly established
"requestcontext" class.
Our new class currently behaves like a proxy to hgweb instances. This
should change once all state is captured in it instead of hgweb. The
effectiveness of this proxy is demonstrated by passing instances of
it - not hgweb instances/self - to various functions.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 14:22:40 -0700] rev 26133
hgweb: don't make request optional
The "request" argument has been optional in this code since
it was introduced in
38170eeed18c in 2009. There are no consumers that
don't pass this argument. So don't make it an optional argument.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 13:58:59 -0700] rev 26132
hgweb: add some documentation
It took longer than I wanted to grok how the various parts of hgweb
worked. So I added some class and method documentation to help whoever
hacks on this next.
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 23:35:06 +0800] rev 26131
hgweb: limit branches shown on summary page to 10
Tags and bookmarks on summary page are already limited to 10, let's limit
branches as well.
Each of the blocks (tags, bookmarks, branches) currently has a link to the full
list.
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 23:29:30 +0800] rev 26130
hgweb: use webutil.branchentries for branches on summary page
This allows showing correct status for each branch, which was missing on
/summary. Usually that means that closed branches get the same css class
(resulting in e.g. different color/shade) as they do on /branches page.
The sorting of the branches on summary page also changes and is now the same as
on /branches page: closed branches are now at the end of the list.
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 22:28:45 +0800] rev 26129
hgweb: move branchentries code from webcommands to webutil
Yuya Nishihara <yuya@tcha.org> [Tue, 18 Aug 2015 22:15:46 +0900] rev 26128
templater: add optional timezone argument to localdate()
The keyword extension uses "utcdate" for a different function, so we can't
add new "utcdate" filter or function. Instead, this patch extends "localdate"
to a general timezone converter.
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:15:16 +0900] rev 26127
templater: port localdate filter to a function
It will be extended to accept a timezone argument.
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:43:14 +0900] rev 26126
util: extract function that parses timezone string
It will be used to parse a timezone argument passed to a template function.
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 19:04:10 +0900] rev 26125
templater: drop unneeded destructuring of argument tuple at buildfilter
Because evalfuncarg() accepts an argument tuple, there is little meaning
to pass (func, data, filt) in place of ((func, data), filt).
Yuya Nishihara <yuya@tcha.org> [Tue, 01 Sep 2015 18:57:50 +0900] rev 26124
templater: extract helper that evaluates filter or function argument
It will be used to get a date tuple from an argument. Perhaps some of
"stringify(args[n][0], ...)" can be replaced by this function.
Matt Mackall <mpm@selenic.com> [Fri, 28 Aug 2015 16:59:31 -0500] rev 26123
contrib: add showstack extension
This allows getting a Python stack trace at any time on Unix by
hitting Ctrl-\ (or Ctrl-T on BSDs). Useful for debugging mysterious
hangs on the fly. Sample output:
$ hg log -k nosuchmessage
^\
File "/home/mpm/hg/mercurial/revset.py", line 3089, in _iterfilter
if cond(x):
File "/home/mpm/hg/mercurial/util.py", line 415, in f
cache[arg] = func(arg)
File "/home/mpm/hg/mercurial/revset.py", line 1215, in matches
for t in c.files() + [c.user(), c.description()])
File "/home/mpm/hg/mercurial/context.py", line 525, in files
return self._changeset[3]
File "/home/mpm/hg/mercurial/util.py", line 531, in __get__
result = self.func(obj)
File "/home/mpm/hg/mercurial/context.py", line 498, in _changeset
return self._repo.changelog.read(self.rev())
File "/home/mpm/hg/mercurial/changelog.py", line 338, in read
text = self.revision(node)
File "/home/mpm/hg/mercurial/revlog.py", line 1092, in revision
bins = self._chunks(chain)
File "/home/mpm/hg/mercurial/revlog.py", line 1013, in _chunks
ladd(decompress(buffer(data, chunkstart - offset, chunklength)))
File "/home/mpm/hg/mercurial/revlog.py", line 91, in decompress
return _decompress(bin)
----
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:33 -0500] rev 26122
Added signature for changeset
1a45e49a6bed
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:32 -0500] rev 26121
Added tag 3.5.1 for changeset
1a45e49a6bed
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:08:07 -0500] rev 26120
hgweb: fix trust of templates path (BC)
Long ago we disabled trust of the templates path with a comment
describing the (insecure) behavior before the change. At some later
refactor, the code was apparently changed back to match the comment,
unaware that the intent of the comment was to describe the behavior to
avoid.
This change disables the trust and updates the comment to explicitly
say not only what the old problem was, but also that it was in fact a
problem and the action taken to prevent it.
Impact: prior to this change, if you had a UNIX-based hgweb server
where users can write hgrc files, those users could potentially read
any file readable by the web server.
This is marked as a backwards compatibility issue because people may
have configured templates without proper trust settings. Issue spotted
by Greg Szorc.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 01 Sep 2015 11:39:08 -0400] rev 26119
wix: avoid an abort with 'hg help -k foo'
Previously:
$ /c/Program\ Files/Mercurial/hg help -k merge-tools
abort: No such file or directory: c:\Program Files\Mercurial\help\scripting.txt
The Inno installer seems OK, but the TortoiseHg required the same fix. That got
queued with an additional change of 'helpFolder.guid' in guids.wxi (probably by
Steve). I'm not sure if that is necessary here too.
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 14:03:32 -0700] rev 26118
revlog: add an aggressivemergedelta option
This adds an option for delta'ing against both p1 and p2 when applying merge
revisions and picking whichever is smallest.
Some before and after stats on manifest.d size:
internal large repo:
before: 1.2 GB
after: 930 MB
mozilla-central:
before: 261 MB
after: 92 MB
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:58:11 -0700] rev 26117
revlog: change generaldelta delta parent heuristic
The old generaldelta heuristic was "if p1 (or p2) was closer than the last full text,
use it, otherwise use prev". This was problematic when a repo contained multiple
branches that were very different. If commits to branch A were pushed, and the
last full text was branch B, it would generate a fulltext. Then if branch B was
pushed, it would generate another fulltext. The problem is that the last
fulltext (and delta'ing against `prev` in general) has no correlation with the
contents of the incoming revision, and therefore will always have degenerate
cases.
According to the blame, that algorithm was chosen to minimize the chain length.
Since there is already code that protects against that (the delta-vs-fulltext
code), and since it has been improved since the original generaldelta algorithm
went in (2011), I believe the chain length criteria will still be preserved.
The new algorithm always diffs against p1 (or p2 if it's closer), unless the
resulting delta will fail the delta-vs-fulltext check, in which case we delta
against prev.
Some before and after stats on manifest.d size.
internal large repo
old heuristic - 2.0 GB
new heuristic - 1.2 GB
mozilla-central
old heuristic - 242 MB
new heuristic - 261 MB
The regression in mozilla central is due to the new heuristic choosing p2r as
the delta when it's closer to the tip. Switching the algorithm to always prefer
p1r brings the size back down (242 MB). This is result of the way in which
mozilla does merges and pushes, and the result could easily swing the other
direction in other repos (depending on if they merge X into Y or Y into X), but
will never be as degenerate as before.
I future patch will address the regression by introducing an optional, even more
aggressive delta heuristic which will knock the mozilla manifest size down
dramatically.
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:34:30 -0700] rev 26116
revlog: move textlen calculation to be above delta chooser
This moves the textlen calculation to be above the delta chooser. Since textlen
is needed for calling isgooddelta, we need it above the delta chooser so future
patches can call isgooddelta.
Durham Goode <durham@fb.com> [Sun, 30 Aug 2015 13:33:00 -0700] rev 26115
revlog: move delta check to it's own function
This moves the delta vs fulltext comparison to its own function. This will allow
us to reuse the function in future patches for more efficient delta choices. As
a side effect, this will also allow extensions to modify our delta criteria.
Anton Shestakov <av6@dwimlabs.net> [Wed, 19 Aug 2015 21:43:13 +0800] rev 26114
monoblue: add archive links on summary page
timeless@mozdev.org [Sun, 30 Aug 2015 19:03:38 -0400] rev 26113
help: distinguish sections when multiple match (
issue4802)
Matt Mackall <mpm@selenic.com> [Mon, 31 Aug 2015 17:21:38 -0500] rev 26112
merge with stable
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:06:41 -0400] rev 26111
hghave: add a check for docker support
This currently refuses to operate if on a non-Linux host. I suspect
that Docker running on FreeBSD 11 or on an Illumos derivative would
work fine, but I don't have ready access to such a system.
On OS X using boot2docker (I used a hacky xhyve-based one for
testing), it won't work because $TESTTEMP doesn't end up inside the
set of directories that get forwarded to the boot2docker VM, so you
can't actually drop debs in the $TESTTEMP at all. It would be possible
(probably even trivial) to hack around this by using a randomly-named
temporary directory inside the working directory, but that seems
unlikely to be useful enough to justify the ugliness.
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:03:15 -0400] rev 26110
hghave: add a check for debian packaging tools
Augie Fackler <augie@google.com> [Mon, 24 Aug 2015 22:23:45 -0400] rev 26109
run-tests: add support for marking tests as very slow
I want to add tests for our packaging rules, but those necessarily run
a whole build, or possibly two if both native packaging and docker are
available. This lets us flag such tests with a `#require slow` so that
they don't unnecessarily slow down normal test runs.
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:02:44 -0400] rev 26108
builddeb: rework how output dir and platform are specified
This makes it possible to write tests for both builddeb and dockerdeb
that actually build .debs and then sanity check the contents.
Augie Fackler <augie@google.com> [Wed, 26 Aug 2015 10:20:07 -0400] rev 26107
parsers: fix two cases of unsigned long instead of Py_ssize_t
We had to do this before because Python 2.4 didn't understand the n
format specifier in Py_BuildValue and friends. We no longer have that
problem.
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Jul 2015 16:07:42 +0900] rev 26106
templatefilters: remove redundant 'date' and 'strip' filters
These filters are defined as 'date()' and 'strip()' functions. Help messages
are moved to the corresponding functions.
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Jul 2015 16:03:36 +0900] rev 26105
templater: introduce unified filter syntax for unary functions
"filter(expr)" is allowed already. This patch adds the opposite, "expr|func".
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Jul 2015 15:59:03 +0900] rev 26104
templater: inline getfilter() to buildfilter()
This prepares for the unified filter syntax that will be introduced by the
next patch.
liscju <piotr.listkiewicz@gmail.com> [Sun, 30 Aug 2015 11:47:43 +0200] rev 26103
clone: fix updaterev to update to latest branch changeset (
issue4528)
Before this patch if clone --updaterev points to branch which head
on src repo wasnt in dest repo, clone updated dest repo to
default branch. After applying this patch, if changeset from
src repo pointing at given branch is not in dest repo, it searches
for changeset pointing for given branch locally in dest repo.
Lookup in destination repo:
559: uprev = destrepo.lookup(update)
is wrapped by try/except block to preserve current behaviour when
given revset to -u is not found - it will not fail,but silently update
dest repo to head of default branch.
liscju <piotr.listkiewicz@gmail.com> [Thu, 20 Aug 2015 17:19:32 +0200] rev 26102
revsets: makes follow() supports file patterns (
issue4757) (BC)
Before this patch, follow only supports full, exact filenames.
This patch makes follow argument to be treated like file
pattern same way like log treats their arguments.
It preserves current behaviour of follow() matching paths
relative to the repository root by default.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Aug 2015 23:14:58 +0900] rev 26101
i18n-ja: synchronized with
b930d4ef7739
timeless@mozdev.org [Fri, 28 Aug 2015 15:50:36 -0400] rev 26100
histedit: improve discoverability of edit commit message
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Aug 2015 17:57:33 -0700] rev 26099
revset: cache smartset's min/max
As the content of a smartset never changes, min and max will never change
either. This will save us time when this function is called multiple times.
This is relevant for
issue4782 but does not fix it.
timeless@mozdev.org [Fri, 28 Aug 2015 10:53:55 -0400] rev 26098
spelling: behaviour -> behavior
timeless@mozdev.org [Fri, 28 Aug 2015 12:18:12 -0400] rev 26097
glossary: fixup use of periods at end of entries
* Include trailing period for entries
* Move trailing period inside quotations for example sentences
timeless@mozdev.org [Fri, 28 Aug 2015 11:31:44 -0400] rev 26096
histedit: fix grammar for help for safety aborts
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Aug 2015 11:15:31 +0900] rev 26095
revset: mark reachablerootspure as private
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Aug 2015 11:14:24 +0900] rev 26094
reachableroots: construct and sort baseset in revset module
This can remove the dependency from changelog to revset, which seems a bit awkward
for me.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 21 Aug 2015 16:12:24 -0700] rev 26093
reachableroots: use smartset min
smartset min are likely to be optimised, cached or other magical property.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 21 Aug 2015 16:03:25 -0700] rev 26092
graphmod: stop building a list out of branchgroupiter
Not only does this defeat the purpose of having `branchgroupiter` an iterable, but
this also makes revs something else than a smartset preventing to use revs.min()
in the call to reachablerevs.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Aug 2015 15:40:42 -0700] rev 26091
reachableroots: sort the smartset in the pure version too
Changeset
be8a4e0800d8 uses smartset lazy sorting for the C version. We need to
apply the same to the pure version for consistency. This is fixing the tests
with --pure.
Augie Fackler <augie@google.com> [Mon, 24 Aug 2015 23:58:32 -0400] rev 26090
builddeb: actually run make when building the deb (
issue4778)
As of this change, we no longer produce broken debs, but I've already
got followups written that will produce much more standard-looking
packages and test the resulting packages.