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).