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
Tue, 18 Aug 2015 22:15:46 +0900 templater: add optional timezone argument to localdate()
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.
Tue, 01 Sep 2015 19:15:16 +0900 templater: port localdate filter to a function
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.
Tue, 01 Sep 2015 19:43:14 +0900 util: extract function that parses timezone string
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.
Tue, 01 Sep 2015 19:04:10 +0900 templater: drop unneeded destructuring of argument tuple at buildfilter
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).
Tue, 01 Sep 2015 18:57:50 +0900 templater: extract helper that evaluates filter or function argument
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.
Fri, 28 Aug 2015 16:59:31 -0500 contrib: add showstack extension
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) ----
Tue, 01 Sep 2015 16:38:33 -0500 Added signature for changeset 1a45e49a6bed stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:33 -0500] rev 26122
Added signature for changeset 1a45e49a6bed
Tue, 01 Sep 2015 16:38:32 -0500 Added tag 3.5.1 for changeset 1a45e49a6bed stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Sep 2015 16:38:32 -0500] rev 26121
Added tag 3.5.1 for changeset 1a45e49a6bed
Tue, 01 Sep 2015 16:08:07 -0500 hgweb: fix trust of templates path (BC) stable 3.5.1
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.
Tue, 01 Sep 2015 11:39:08 -0400 wix: avoid an abort with 'hg help -k foo' stable
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.
Sun, 30 Aug 2015 14:03:32 -0700 revlog: add an aggressivemergedelta option
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
Sun, 30 Aug 2015 13:58:11 -0700 revlog: change generaldelta delta parent heuristic
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.
Sun, 30 Aug 2015 13:34:30 -0700 revlog: move textlen calculation to be above delta chooser
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.
Sun, 30 Aug 2015 13:33:00 -0700 revlog: move delta check to it's own function
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.
Wed, 19 Aug 2015 21:43:13 +0800 monoblue: add archive links on summary page
Anton Shestakov <av6@dwimlabs.net> [Wed, 19 Aug 2015 21:43:13 +0800] rev 26114
monoblue: add archive links on summary page
Sun, 30 Aug 2015 19:03:38 -0400 help: distinguish sections when multiple match (issue4802)
timeless@mozdev.org [Sun, 30 Aug 2015 19:03:38 -0400] rev 26113
help: distinguish sections when multiple match (issue4802)
Mon, 31 Aug 2015 17:21:38 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 31 Aug 2015 17:21:38 -0500] rev 26112
merge with stable
Tue, 25 Aug 2015 00:06:41 -0400 hghave: add a check for docker support
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.
Tue, 25 Aug 2015 00:03:15 -0400 hghave: add a check for debian packaging tools
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:03:15 -0400] rev 26110
hghave: add a check for debian packaging tools
Mon, 24 Aug 2015 22:23:45 -0400 run-tests: add support for marking tests as very slow
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.
Tue, 25 Aug 2015 00:02:44 -0400 builddeb: rework how output dir and platform are specified
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.
Wed, 26 Aug 2015 10:20:07 -0400 parsers: fix two cases of unsigned long instead of Py_ssize_t
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.
Sat, 04 Jul 2015 16:07:42 +0900 templatefilters: remove redundant 'date' and 'strip' filters
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.
Sat, 04 Jul 2015 16:03:36 +0900 templater: introduce unified filter syntax for unary 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".
Sat, 04 Jul 2015 15:59:03 +0900 templater: inline getfilter() to buildfilter()
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.
Sun, 30 Aug 2015 11:47:43 +0200 clone: fix updaterev to update to latest branch changeset (issue4528)
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.
Thu, 20 Aug 2015 17:19:32 +0200 revsets: makes follow() supports file patterns (issue4757) (BC)
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.
Mon, 31 Aug 2015 23:14:58 +0900 i18n-ja: synchronized with b930d4ef7739 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Aug 2015 23:14:58 +0900] rev 26101
i18n-ja: synchronized with b930d4ef7739
Fri, 28 Aug 2015 15:50:36 -0400 histedit: improve discoverability of edit commit message
timeless@mozdev.org [Fri, 28 Aug 2015 15:50:36 -0400] rev 26100
histedit: improve discoverability of edit commit message
Thu, 27 Aug 2015 17:57:33 -0700 revset: cache smartset's min/max
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.
Fri, 28 Aug 2015 10:53:55 -0400 spelling: behaviour -> behavior
timeless@mozdev.org [Fri, 28 Aug 2015 10:53:55 -0400] rev 26098
spelling: behaviour -> behavior
Fri, 28 Aug 2015 12:18:12 -0400 glossary: fixup use of periods at end of entries
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
Fri, 28 Aug 2015 11:31:44 -0400 histedit: fix grammar for help for safety aborts
timeless@mozdev.org [Fri, 28 Aug 2015 11:31:44 -0400] rev 26096
histedit: fix grammar for help for safety aborts
Fri, 28 Aug 2015 11:15:31 +0900 revset: mark reachablerootspure as private
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Aug 2015 11:15:31 +0900] rev 26095
revset: mark reachablerootspure as private
Fri, 28 Aug 2015 11:14:24 +0900 reachableroots: construct and sort baseset in revset module
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.
Fri, 21 Aug 2015 16:12:24 -0700 reachableroots: use smartset min
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.
Fri, 21 Aug 2015 16:03:25 -0700 graphmod: stop building a list out of branchgroupiter
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.
Mon, 24 Aug 2015 15:40:42 -0700 reachableroots: sort the smartset in the pure version too
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.
Mon, 24 Aug 2015 23:58:32 -0400 builddeb: actually run make when building the deb (issue4778)
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.
Mon, 24 Aug 2015 23:47:43 -0400 docker-debian-jessie: fix errant mkdir
Augie Fackler <augie@google.com> [Mon, 24 Aug 2015 23:47:43 -0400] rev 26089
docker-debian-jessie: fix errant mkdir
Thu, 27 Aug 2015 14:24:39 -0400 makefile: rename debian-jessie to deb
Augie Fackler <augie@google.com> [Thu, 27 Aug 2015 14:24:39 -0400] rev 26088
makefile: rename debian-jessie to deb `make debian-jessie` was a poor name choice on my part, because it really builds a package for the current debian platform, whatever that happens to be, rather than a specific platform. Rename it to just `make deb` so that it's a little clearer. As a result, it now places built debs in a "debian-unknown" directory.
Tue, 25 Aug 2015 00:40:42 -0400 run-tests: ignore failed removal of nonexistent installerrs
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 00:40:42 -0400] rev 26087
run-tests: ignore failed removal of nonexistent installerrs When running tests with -j100 or so on a large machine, I see this os.remove call failing semi-regularly. Since it's not really a problem when the file is already gone, just suppress the error in that case.
Tue, 25 Aug 2015 13:38:20 -0500 templater: move verbosity-to-template matcher to constructor
Matt Mackall <mpm@selenic.com> [Tue, 25 Aug 2015 13:38:20 -0500] rev 26086
templater: move verbosity-to-template matcher to constructor We're going to reuse this and it's silly for it to be done per-cset anyway.
Tue, 25 Aug 2015 12:59:08 -0500 templater: remove pseudo-ternary
Matt Mackall <mpm@selenic.com> [Tue, 25 Aug 2015 12:59:08 -0500] rev 26085
templater: remove pseudo-ternary
Tue, 25 Aug 2015 12:57:21 -0500 templater: fix variable name that shadows built-in
Matt Mackall <mpm@selenic.com> [Tue, 25 Aug 2015 12:57:21 -0500] rev 26084
templater: fix variable name that shadows built-in
Tue, 25 Aug 2015 09:38:06 -0500 templater: minor whitespace tweaks
Matt Mackall <mpm@selenic.com> [Tue, 25 Aug 2015 09:38:06 -0500] rev 26083
templater: minor whitespace tweaks
Mon, 24 Aug 2015 13:26:10 -0500 lock: make trylock private
Matt Mackall <mpm@selenic.com> [Mon, 24 Aug 2015 13:26:10 -0500] rev 26082
lock: make trylock private
Mon, 24 Aug 2015 13:24:43 -0500 lock: loop a finite number of times in trylock (issue4787)
Matt Mackall <mpm@selenic.com> [Mon, 24 Aug 2015 13:24:43 -0500] rev 26081
lock: loop a finite number of times in trylock (issue4787) ..before falling back to lock, which will sleep. This only addresses the CPU consumption of the reported issue.
Fri, 14 Aug 2015 12:25:14 +0900 reachableroots: silence warning of implicit integer narrowing issued by clang
Yuya Nishihara <yuya@tcha.org> [Fri, 14 Aug 2015 12:25:14 +0900] rev 26080
reachableroots: silence warning of implicit integer narrowing issued by clang Tested with CFLAGS=-Wshorten-64-to-32 CC=clang which is the default of Mac OS X. Because a valid revnum shouldn't exceed INT_MAX, we don't need long width for large tovisit array.
Fri, 14 Aug 2015 12:22:08 +0900 reachableroots: narrow scope of minidx variable
Yuya Nishihara <yuya@tcha.org> [Fri, 14 Aug 2015 12:22:08 +0900] rev 26079
reachableroots: narrow scope of minidx variable minidx is never used if includepath is false, so let's define it where it is used.
Tue, 25 Aug 2015 15:54:33 -0700 convert: fix syncing deletes from p2 merge commit
Durham Goode <durham@fb.com> [Tue, 25 Aug 2015 15:54:33 -0700] rev 26078
convert: fix syncing deletes from p2 merge commit Recently we fixed converting merges to correctly sync changes from p2. We missed the case of deletes though (so p2 deleted a file that p1 had not yet deleted, and the file does not belong to the source). The fix is to detect when p2 doesn't have the file, so we just sync it as a delete to p1 in the merge. Updated the test, and verified it failed before the fix.
Mon, 24 Aug 2015 22:16:01 -0700 convert: add convert.git.skipsubmodules option
Durham Goode <durham@fb.com> [Mon, 24 Aug 2015 22:16:01 -0700] rev 26077
convert: add convert.git.skipsubmodules option This adds an option to not pull in gitsubmodules during a convert. This is useful when converting large git repositories where gitsubmodules were allowed historically, but are no longer wanted.
Mon, 24 Aug 2015 19:33:36 -0700 paths: move path validation logic to its own function
Durham Goode <durham@fb.com> [Mon, 24 Aug 2015 19:33:36 -0700] rev 26076
paths: move path validation logic to its own function Hard coding the '.hg' path in the paths class made it difficult for the hggit extension to pull from gitrepos. This patch moves the logic out to it's own function so extensions can add additional checks to what is a valid path (i.e. a git repo is valid when hggit is enabled).
Fri, 21 Aug 2015 14:33:51 -0400 parsers: avoid int/unsigned conversions
Augie Fackler <augie@google.com> [Fri, 21 Aug 2015 14:33:51 -0400] rev 26075
parsers: avoid int/unsigned conversions Detected with make local CFLAGS='-Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter' CC=clang
Fri, 21 Aug 2015 14:29:42 -0400 base85: fix comparison of an int and a long
Augie Fackler <augie@google.com> [Fri, 21 Aug 2015 14:29:42 -0400] rev 26074
base85: fix comparison of an int and a long Caught using make local CFLAGS='-Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter' CC=clang
Tue, 25 Aug 2015 15:52:54 -0400 progress: restore testedwith to the stub
Augie Fackler <augie@google.com> [Tue, 25 Aug 2015 15:52:54 -0400] rev 26073
progress: restore testedwith to the stub Without this, hg always claims progress is at fault for problems, which is completely crazy.
Sat, 22 Aug 2015 22:59:51 -0700 hgweb: make refresh interval configurable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 22:59:51 -0700] rev 26072
hgweb: make refresh interval configurable hgwebdir refreshes the set of known repositories periodically. This is necessary because refreshing on every request could add significant request latency. More than once I've found myself wanting to tweak this interval at Mozilla. I've also wanted the ability to always refresh (often when writing tests for our replication setup). This patch makes the refresh interval configurable. Negative values indicate to always refresh. The default is left unchanged.
Sun, 16 Aug 2015 10:19:00 +0200 filemerge: add 'union' merge to internal merge tool
Erik Huelsmann <ehuels@gmail.com> [Sun, 16 Aug 2015 10:19:00 +0200] rev 26071
filemerge: add 'union' merge to internal merge tool 'union merge' is a merge strategy which adds both left and right hand side of a conflict region. Git implements this merge strategy which is very practical to have for merging e.g. the Changelog file.
Sun, 16 Aug 2015 00:24:29 +0200 filemerge: split internal merge into api entry point and internal helper
Erik Huelsmann <ehuels@gmail.com> [Sun, 16 Aug 2015 00:24:29 +0200] rev 26070
filemerge: split internal merge into api entry point and internal helper This is a step toward adding 'union merge' to the internal merge tool. 'union merge' is a merge strategy which adds both left and right hand side of a conflict region. Git implements this merge strategy which is very practical to have for merging to e.g. the Changelog file.
Sun, 16 Aug 2015 00:00:34 +0200 simplemerge: add 'mode' kwarg which - when 'union' - suppresses markers
Erik Huelsmann <ehuels@gmail.com> [Sun, 16 Aug 2015 00:00:34 +0200] rev 26069
simplemerge: add 'mode' kwarg which - when 'union' - suppresses markers This is a step toward adding 'union merge' to the internal merge tool. 'union merge' is a merge strategy which adds both left and right hand side of a conflict region. Git implements this merge strategy which is very practical to have for merging to e.g. the Changelog file. Note: the identifiers with underscores in this commit are all using existing variable names and/or keyword arguments.
Sat, 22 Aug 2015 10:37:38 -0700 hghave: remove quiet option
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 10:37:38 -0700] rev 26068
hghave: remove quiet option The --quiet flag appears to be unused. Kill it.
Sat, 22 Aug 2015 10:28:34 -0700 hghave: move feature checking into hghave.py
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 10:28:34 -0700] rev 26067
hghave: move feature checking into hghave.py Upcoming patches will kill hghave (the script - not hghave.py) and will move to a model where requirements checking is performed as a function call. Start diminishing the utility of hghave by moving some code to hghave.py.
Sat, 22 Aug 2015 10:22:12 -0700 tests: move '#require bzr' into .t files
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 10:22:12 -0700] rev 26066
tests: move '#require bzr' into .t files The bzr tests are the only .t tests calling hghave (aside from the tests testing hghave itself). This pattern is a one-off and prevents desired refactors to how requirements checking is integrated into tests. Use the convention used everywhere else.
Sat, 08 Aug 2015 00:12:41 -0700 commands.push: use "pushloc" path attribute
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Aug 2015 00:12:41 -0700] rev 26065
commands.push: use "pushloc" path attribute Path instances now have a "pushloc" attribute that exposes the path to be used for pushing. The "default-push" path is automatically captured in the "pushloc" attribute of the "default" path. Drop references to "default-push" and use the "pushloc" attribute for looking up where to push to.
Fri, 07 Aug 2015 21:53:34 -0700 ui: capture push location on path instances
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 07 Aug 2015 21:53:34 -0700] rev 26064
ui: capture push location on path instances Currently, we treat "default" and "default-push" as separate paths, even though they are the same logical entity but with different paths for different operations. Because they are the same entity and because we will eventually be implementing an official mechanism for declaring push URLs for paths, we establish a "pushloc" attribute on path instances. We populate this attribute on the "default" path with the "default-push" value, if present. This will enable consumers stop referencing "default-push" which will make their code simpler.
Mon, 25 May 2015 13:10:38 -0700 worker: use multiprocessing to find cpu count
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 25 May 2015 13:10:38 -0700] rev 26063
worker: use multiprocessing to find cpu count The multiprocessing package was added in Python 2.6. The implementation of worker.countcpus() is very similar to multiprocessing.cpu_count(). Ditch our one-off code. multiprocessing does result in a number of imports. However, the lazy importer ensures that we don't import anything until cpu_count() is called. Furthermore, if we are doing something with multiple cores, chances are the time of that operation will dwarf the import time, so module bloat isn't a concern here.
Mon, 24 Aug 2015 10:09:00 -0400 import-checker: ensure multiprocessing is treated as from stdlib
Augie Fackler <augie@google.com> [Mon, 24 Aug 2015 10:09:00 -0400] rev 26062
import-checker: ensure multiprocessing is treated as from stdlib On my linux machines multiprocessing appears to defeat the logic in import-checker to detect stdlib modules. Since we now only use versions of Python which ship with multiprocessing, let's just whitelist the module.
Thu, 20 Aug 2015 17:23:21 -0700 reachableroots: use baseset lazy sorting
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Aug 2015 17:23:21 -0700] rev 26061
reachableroots: use baseset lazy sorting smartset sorting is lazy (so faster in some case) and better (informs that the set is sorted allowing some optimisation). So we rely on it directly. Some test output are updated because we now have more information (ordering).
Thu, 20 Aug 2015 17:19:56 -0700 baseset: keep the input set around
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Aug 2015 17:19:56 -0700] rev 26060
baseset: keep the input set around Baseset needs a list to operate, but will convert that list back to a set for membership testing. It seems a bit silly to convert the set into a list to convert it back afterward.
Sun, 16 Aug 2015 09:30:37 +0900 reachableroots: unroll loop that checks if one of parents is reachable
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Aug 2015 09:30:37 +0900] rev 26059
reachableroots: unroll loop that checks if one of parents is reachable The difference is small, but fewer loops should be better in general: revset #0: 0::tip 0) 0.001609 1) 0.001510 93%
Sat, 15 Aug 2015 19:38:03 +0900 reachableroots: handle error of PyList_Append()
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Aug 2015 19:38:03 +0900] rev 26058
reachableroots: handle error of PyList_Append()
Fri, 07 Aug 2015 22:39:47 -0700 commands.push: use paths API
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 07 Aug 2015 22:39:47 -0700] rev 26057
commands.push: use paths API ui.path instances now collect most of the data used by commands.push(). Move away from ui.expandpath() and call ui.paths.getpath() to get a path instance. Some "pushing to" output was dropped as one test demonstrates. I believe the dropped message was redundant with the error message and the change to be acceptable.
Sat, 08 Aug 2015 00:16:02 -0700 ui: move URL and path detection into path API
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Aug 2015 00:16:02 -0700] rev 26056
ui: move URL and path detection into path API ui.expandpath() has code for recognizing URLs or local filesystem paths. Our goal is to use ``path`` class instances everywhere a path is represented. Changing ui.expandpath() to return path instances is a lot of work. Our goal is to slowly marginalize it by moving logic into the paths API and to convert callers to the paths API. Many callers of ui.expandpath() pass in a value that could be a local filesystem path or URI. We move the detection of these strings from ui.expandpath() to paths.getpath() and path.__init__(). To do this properly in a way that is compatible with future callers, we need to parse the "#branch" syntax out of locations. This is a bit complicated, but it is necessary. The code for URL parsing is essentially a copy of hg.parseurl(). Once all consumers are speaking the paths API, it is likely that this function won't be called any more and it can be deleted.
Fri, 14 Aug 2015 15:52:19 +0900 reachableroots: return list of revisions instead of set
Yuya Nishihara <yuya@tcha.org> [Fri, 14 Aug 2015 15:52:19 +0900] rev 26055
reachableroots: return list of revisions instead of set Now we don't need a set of reachable revisions, and the caller wants a sorted list of revisions, so constructing a set is just a waste of time. revset #0: 0::tip 2) 0.002536 3) 0.001598 63% PyList_New() should set an appropriate exception on error, so we don't need to call PyErr_NoMemory() manually. This patch lacks error handling of PyList_Append() as it was before for PySet_Add(). It should be fixed later.
Fri, 14 Aug 2015 15:49:11 +0900 reachableroots: use internal "revstates" array to test if rev is reachable
Yuya Nishihara <yuya@tcha.org> [Fri, 14 Aug 2015 15:49:11 +0900] rev 26054
reachableroots: use internal "revstates" array to test if rev is reachable This is faster than using PySet_Contains(). revset #0: 0::tip 1) 0.003678 2) 0.002536 68%
Fri, 14 Aug 2015 15:43:29 +0900 reachableroots: use internal "revstates" array to test if rev is a root
Yuya Nishihara <yuya@tcha.org> [Fri, 14 Aug 2015 15:43:29 +0900] rev 26053
reachableroots: use internal "revstates" array to test if rev is a root The main goal of this patch series is to reduce the use of PyXxx() function that is likely to require ugly error handling and inc/decref. Plus, this is faster than using PySet_Contains(). revset #0: 0::tip 0) 0.004168 1) 0.003678 88% This patch ignores out-of-range roots as they are in the pure implementation. Because reachable sets are calculated from heads, and out-of-range heads raise IndexError, we can just take out-of-range roots as unreachable. Otherwise, the test of "hg log -Gr '. + wdir()'" would fail. "heads" argument is changed to a list. Should we have to rename the C function as its signature is changed?
Tue, 18 Aug 2015 16:40:10 -0400 parsers: set exception when there's too little string data to extract parents
Augie Fackler <augie@google.com> [Tue, 18 Aug 2015 16:40:10 -0400] rev 26052
parsers: set exception when there's too little string data to extract parents Previously we were returning NULL from this function without actually setting up an exception. This fixes that problem, which was detected with cpychecker.
Tue, 18 Aug 2015 16:39:26 -0400 parsers: drop spurious check of readlen value
Augie Fackler <augie@google.com> [Tue, 18 Aug 2015 16:39:26 -0400] rev 26051
parsers: drop spurious check of readlen value We're about to check if len < 40 after assigning readlen to len, which means that if len < 40 we'll still abort, but I'm about to add a sensible exception to that failure, so let's just discard this useless check.
Tue, 18 Aug 2015 16:32:41 -0400 pathencode: check result of .digest() method in sha1hash
Augie Fackler <augie@google.com> [Tue, 18 Aug 2015 16:32:41 -0400] rev 26050
pathencode: check result of .digest() method in sha1hash Without this it was theoretically possible .digest() would fail and return NULL but we wouldn't notice. Detected with cpychecker.
Tue, 18 Aug 2015 16:43:26 -0400 parsers: correctly decref normed value after PyDict_SetItem
Augie Fackler <augie@google.com> [Tue, 18 Aug 2015 16:43:26 -0400] rev 26049
parsers: correctly decref normed value after PyDict_SetItem Previously we were leaving this PyObject* with a refcount that was one too high. Detected with cpychecker.
Tue, 18 Aug 2015 17:15:04 -0400 parsers: fix two leaks in index_ancestors
Augie Fackler <augie@google.com> [Tue, 18 Aug 2015 17:15:04 -0400] rev 26048
parsers: fix two leaks in index_ancestors Both happy paths through this function leaked the returned list: 1) If the list was of size 0 or 1, it was retained an extra time and then returned. 2) If the list was passed to find_deepest, it was never released before exiting this function. Both paths spotted by cpychecker.
Tue, 18 Aug 2015 18:38:56 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 18 Aug 2015 18:38:56 -0500] rev 26047
merge with stable
Tue, 18 Aug 2015 18:37:50 -0500 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Tue, 18 Aug 2015 18:37:50 -0500] rev 26046
merge with i18n
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip