Mon, 07 Sep 2015 21:58:17 +0900 templater: catch regexp error at sub() function
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.
Tue, 08 Sep 2015 23:00:44 +0900 graphmod: compute slow revset query once prior to reachableroots (issue4782)
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."
Mon, 07 Sep 2015 11:35:40 -0700 profiling: add config option for enabling profiling
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).
Mon, 07 Sep 2015 11:31:44 -0700 blackbox: add pid to output
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.
Mon, 07 Sep 2015 17:08:35 -0700 exchange: allow fallbackheads to use lazy set behavior
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.
Sat, 22 Aug 2015 16:38:51 -0700 hgweb: move templater instantiation to requestcontext
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.
Wed, 02 Sep 2015 13:39:46 -0400 help/config: make defaults consistent
timeless@mozdev.org [Wed, 02 Sep 2015 13:39:46 -0400] rev 26182
help/config: make defaults consistent
Wed, 02 Sep 2015 02:05:32 -0400 help/config: reword allow_push to fix grammar
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:32 -0400] rev 26181
help/config: reword allow_push to fix grammar
Wed, 02 Sep 2015 02:05:04 -0400 help/config: change local_hostname help style
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:04 -0400] rev 26180
help/config: change local_hostname help style
Wed, 02 Sep 2015 02:04:45 -0400 help/config: include check values
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:45 -0400] rev 26179
help/config: include check values
Wed, 02 Sep 2015 02:04:22 -0400 help/config: simplify default text
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:22 -0400] rev 26178
help/config: simplify default text
Wed, 02 Sep 2015 02:03:55 -0400 help/config: add trailing periods
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:55 -0400] rev 26177
help/config: add trailing periods
Wed, 02 Sep 2015 02:03:22 -0400 help/config: alias, ui.mergemarkertemplate add period for etc.
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:22 -0400] rev 26176
help/config: alias, ui.mergemarkertemplate add period for etc.
Fri, 04 Sep 2015 21:12:07 +0800 tests: fix css-related test-hgweb.t breakage from 93258d53ec35
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
Thu, 03 Sep 2015 00:22:17 -0400 help/scripting: fix HGENCODING indentation
timeless@mozdev.org [Thu, 03 Sep 2015 00:22:17 -0400] rev 26174
help/scripting: fix HGENCODING indentation
Fri, 28 Aug 2015 13:57:20 -0400 test-strip: fix spelling of initialization (en-US)
timeless@mozdev.org [Fri, 28 Aug 2015 13:57:20 -0400] rev 26173
test-strip: fix spelling of initialization (en-US)
Wed, 02 Sep 2015 02:02:58 -0400 help/config: add blank lines
timeless@mozdev.org [Wed, 02 Sep 2015 02:02:58 -0400] rev 26172
help/config: add blank lines
Fri, 28 Aug 2015 13:52:49 -0400 histedit: fix English (en-US)
timeless@mozdev.org [Fri, 28 Aug 2015 13:52:49 -0400] rev 26171
histedit: fix English (en-US)
Thu, 03 Sep 2015 17:06:27 -0400 minirst: handle edge in hunting for parents
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`` ------------
Fri, 04 Sep 2015 05:42:21 -0400 help: config indent committemplate.changeset section
timeless@mozdev.org [Fri, 04 Sep 2015 05:42:21 -0400] rev 26169
help: config indent committemplate.changeset section
Wed, 02 Sep 2015 16:56:04 -0400 test-merge-tools: include /usr/sbin in path for sysctl (issue4813)
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)
Thu, 03 Sep 2015 18:32:17 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 03 Sep 2015 18:32:17 -0500] rev 26167
merge with stable
Wed, 02 Sep 2015 16:07:35 -0400 import-checker: accept .pyc and .pyo files (issue4812)
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
Tue, 01 Sep 2015 21:37:51 +0200 rebase: fix warning about ignoring tool option on rebase continue (issue4698)
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
Sat, 22 Aug 2015 16:39:29 -0700 hgweb: create websubtable on requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:39:29 -0700] rev 26164
hgweb: create websubtable on requestcontext
Sat, 22 Aug 2015 16:28:22 -0700 hgweb: move templatepath to 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.
Sat, 22 Aug 2015 15:40:33 -0700 hgweb: extract web substitutions table generation to own function
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.
Sat, 22 Aug 2015 15:32:16 -0700 hgweb: remove hgweb.configbool
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.
Sat, 22 Aug 2015 15:30:39 -0700 hgweb: move additional state setting outside of refresh
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.
Wed, 02 Sep 2015 23:50:45 -0400 commands: support hg help scripting.HGPLAIN
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...
Wed, 02 Sep 2015 15:19:05 -0400 run-tests: use $HGTEST_RUN_TESTS_PURE
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.
Wed, 02 Sep 2015 15:12:08 -0400 minirst: don't treat top level item as children of last item (issue4803)
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
Wed, 02 Sep 2015 22:05:58 -0700 scmutil.readonlyvfs: implement join
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Sep 2015 22:05:58 -0700] rev 26156
scmutil.readonlyvfs: implement join Required in an upcoming patch.
Wed, 02 Sep 2015 22:05:23 -0700 localrepo: move dirstate validate function to class scope
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.
Thu, 03 Sep 2015 10:29:42 -0700 convert: remove restriction on multiple --rev in hg source
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.
Fri, 04 Sep 2015 02:51:57 +0800 monoblue: add a margin for help text container
Anton Shestakov <av6@dwimlabs.net> [Fri, 04 Sep 2015 02:51:57 +0800] rev 26153
monoblue: add a margin for help text container
Thu, 03 Sep 2015 23:46:31 +0800 gitweb: 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
Thu, 03 Sep 2015 22:25:16 +0800 monoblue: fix page subtitle on help pages stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 03 Sep 2015 22:25:16 +0800] rev 26151
monoblue: fix page subtitle on help pages
Thu, 03 Sep 2015 12:19:43 -0500 hgweb: use latest mtime for caching tag (issue4814) stable
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.
Sat, 22 Aug 2015 15:21:45 -0700 hgweb: initialize repostate to None
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.
Wed, 26 Aug 2015 10:59:09 -0400 debian: switch to using debhelper and dh_python2 to build debs
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.
Tue, 25 Aug 2015 00:08:29 -0400 test-debian-packages: new test for testing construction of debian packages
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
Mon, 31 Aug 2015 22:44:57 -0400 test-docker-packaging: test packages built using docker
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.
Mon, 31 Aug 2015 22:43:33 -0400 hghave: correct test for debhelper
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.
Tue, 01 Sep 2015 15:47:33 -0400 bundle2: don't try to recover from a GeneratorExit (issue4785)
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 0x7fd2f6c586e0> ignored
Tue, 01 Sep 2015 16:46:05 -0700 revset: fix resolving strings from a list
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".
Mon, 31 Aug 2015 23:29:15 +0900 dispatch: error out on invalid -R path even if optionalrepo (issue4805) (BC)
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".
Tue, 01 Sep 2015 16:38:52 +0900 test-ssh: remove superfluous triple slashes from absolute path test
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.
Wed, 02 Sep 2015 11:52:24 -0500 vagrant: update to official Debian 8.1 base box
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).
Tue, 01 Sep 2015 14:41:41 -0400 buildrpm: mkdir -p two needed directories (issue4779)
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.
Tue, 01 Sep 2015 17:09:00 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 17:09:00 -0500] rev 26138
merge with stable
Mon, 31 Aug 2015 22:44:20 -0400 hghave: use subprocess instead of os.popen
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.
Sat, 22 Aug 2015 15:12:52 -0700 hgweb: move archive related attributes to requestcontext
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.
Sat, 22 Aug 2015 15:02:41 -0700 hgweb: move some config options to requestcontext
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.
Sat, 22 Aug 2015 14:59:36 -0700 hgweb: establish class for holding per request context
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.
Sat, 22 Aug 2015 14:22:40 -0700 hgweb: don't make request optional
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.
Sat, 22 Aug 2015 13:58:59 -0700 hgweb: add some documentation
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.
Tue, 01 Sep 2015 23:35:06 +0800 hgweb: limit branches shown on summary page to 10
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.
Tue, 01 Sep 2015 23:29:30 +0800 hgweb: use webutil.branchentries for branches on summary page
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.
Tue, 01 Sep 2015 22:28:45 +0800 hgweb: move branchentries code from webcommands to webutil
Anton Shestakov <av6@dwimlabs.net> [Tue, 01 Sep 2015 22:28:45 +0800] rev 26129
hgweb: move branchentries code from webcommands to webutil
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip