Fri, 23 Jun 2017 10:05:01 +0800 docker: install less as a build-time dependency in deb-based distros stable
Anton Shestakov <av6@dwimlabs.net> [Fri, 23 Jun 2017 10:05:01 +0800] rev 33023
docker: install less as a build-time dependency in deb-based distros It's needed since 387a76cac28e, otherwise dpkg-checkbuilddeps errors out.
Sat, 24 Jun 2017 13:48:04 +0900 py3: add utility to forward __str__() to __bytes__()
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jun 2017 13:48:04 +0900] rev 33022
py3: add utility to forward __str__() to __bytes__() It calls unifromlocal() instead of sysstr() because __bytes__() may contain locale-dependent values such as paths.
Sat, 24 Jun 2017 13:20:30 +0900 share: use dict literal instead of dict(key=value)
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jun 2017 13:20:30 +0900] rev 33021
share: use dict literal instead of dict(key=value) check-code.py has the rule, but it isn't smart enough to catch this.
Thu, 22 Jun 2017 03:24:12 +0530 py3: use r'' to prevent conversion to bytes by transformer
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 03:24:12 +0530] rev 33020
py3: use r'' to prevent conversion to bytes by transformer
Thu, 22 Jun 2017 03:22:30 +0530 py3: define __bytes__ for basefilectx class
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 03:22:30 +0530] rev 33019
py3: define __bytes__ for basefilectx class The implementation is shamely copied from the __str__ function
Thu, 22 Jun 2017 03:20:11 +0530 py3: check for bytes instead of str in isinstance
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 03:20:11 +0530] rev 33018
py3: check for bytes instead of str in isinstance
Thu, 22 Jun 2017 03:16:16 +0530 py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 03:16:16 +0530] rev 33017
py3: convert kwargs' keys' to str using pycompat.strkwargs() On Python 3, we must have keys of keyword arguments as str.
Thu, 22 Jun 2017 03:10:24 +0530 py3: convert kwargs keys' back to bytes using pycompat.byteskwargs()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 03:10:24 +0530] rev 33016
py3: convert kwargs keys' back to bytes using pycompat.byteskwargs()
Thu, 22 Jun 2017 01:29:07 +0530 py3: use "%d" % val for int rather than pycompat.bytestr
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 22 Jun 2017 01:29:07 +0530] rev 33015
py3: use "%d" % val for int rather than pycompat.bytestr Earlier I used pycompat.bytestr() to convert integers to bytes, but we can do b"%d" % val to convert that int to bytes. b'' is already added by the transformer. Thanks to Yuya for suggesting this.
Fri, 23 Jun 2017 10:59:05 -0700 extensions: call afterloaded() with loaded=False for disabled extensions
Adam Simpkins <simpkins@fb.com> [Fri, 23 Jun 2017 10:59:05 -0700] rev 33014
extensions: call afterloaded() with loaded=False for disabled extensions If an extension was loaded but disabled due to a minimumhgversion check it will be present in the _extensions map, but set to None. The rest of the extensions code treats the extension as if it were not present in this case, but the afterloaded() function called the callback with loaded=True.
Sat, 24 Jun 2017 02:39:13 +0900 fetch: remove shorthand of --edit colliding against -e/-ssh in remoteopts (BC)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Jun 2017 02:39:13 +0900] rev 33013
fetch: remove shorthand of --edit colliding against -e/-ssh in remoteopts (BC) Before this patch, -e/--edit and -e/--ssh of fetch command collide against each other. This causes that -e is treated as shorthand of --edit but doesn't work as same as --edit. Therefore, -e works as neither --edit nor --ssh, in practice. This issue was introduced at 595a69a01129 (or 1.0), which renamed -f/--force-editor to -e/--edit. At that point, -e was already used as shorthand of --ssh. After this patch, -e is treated as shorthand of --ssh. This patch is marked as "(BC)", because -e as shorthand of --edit in existing scripts causes failure (or unexpected result) after this patch. This impact should be less enough, because --edit mainly focuses on interactive use. BTW, test-duplicateoptions.py (since 7d171c05a631 or 1.9) can't detect this kind of issues as expected, because direct invocation of extensions.loadall() doesn't involve registration of commands defined in extensions (this issue is fixed in subsequent patch).
Fri, 23 Jun 2017 17:15:53 +0200 releasenotes: improve parsing around bullet points
Rishabh Madan <rishabhmadan96@gmail.com> [Fri, 23 Jun 2017 17:15:53 +0200] rev 33012
releasenotes: improve parsing around bullet points Earlier, on parsing the bullet points from existing release notes the bullet points after the first one weren't written correctly to the notes file. This patch makes changes to parsereleasenotesfromfile() function that introduces a new bullet_points data structure that tracks the bullets and associated subparagraph. It also makes necessary changes to the tests related to merging of bullets.
Tue, 20 Jun 2017 17:18:20 -0700 bookmarks: factor method _printer out of for loop in printbookmarks
Sean Farley <sean@farley.io> [Tue, 20 Jun 2017 17:18:20 -0700] rev 33011
bookmarks: factor method _printer out of for loop in printbookmarks This allows even further customization via extensions for printing bookmarks. For example, in hg-git this would allow printing remote refs by just modifying the 'bmarks' parameter instead of reimplementing the old commands.bookmarks method. Furthermore, there is another benefit: now multiple extensions can chain their custom data to bookmark printing. Previously, an extension could have conflicting bookmark output due to which loaded first and overrode commands.bookmarks. Now they can all play nicely together.
Tue, 20 Jun 2017 16:36:25 -0700 bookmarks: factor out bookmark printing from commands
Sean Farley <sean@farley.io> [Tue, 20 Jun 2017 16:36:25 -0700] rev 33010
bookmarks: factor out bookmark printing from commands
Tue, 20 Jun 2017 15:56:29 -0700 commands: move activebookmarklabel to bookmarks module
Sean Farley <sean@farley.io> [Tue, 20 Jun 2017 15:56:29 -0700] rev 33009
commands: move activebookmarklabel to bookmarks module This is going to be used in an upcoming patch that moves more methods to bookmarks.py.
Tue, 20 Jun 2017 15:36:43 -0700 commands: replace locking code with a context manager
Sean Farley <sean@farley.io> [Tue, 20 Jun 2017 15:36:43 -0700] rev 33008
commands: replace locking code with a context manager Note that this means that we're unnecessarily creating a transaction in the pure "--inactive" (i.e. when deactivating the current bookmark), but that should be harmless.
Tue, 20 Jun 2017 15:18:40 -0700 bookmarks: factor out adding a list of bookmarks logic from commands
Sean Farley <sean@farley.io> [Tue, 20 Jun 2017 15:18:40 -0700] rev 33007
bookmarks: factor out adding a list of bookmarks logic from commands We keep the lock in the caller so that future devs are aware of the locking implications.
Tue, 13 Jun 2017 11:10:22 -0700 bookmarks: factor out rename logic from commands
Sean Farley <sean@farley.io> [Tue, 13 Jun 2017 11:10:22 -0700] rev 33006
bookmarks: factor out rename logic from commands We keep the lock in the caller so that future devs are aware of the locking implications.
Mon, 12 Jun 2017 23:02:48 -0700 bookmarks: factor out delete logic from commands
Sean Farley <sean@farley.io> [Mon, 12 Jun 2017 23:02:48 -0700] rev 33005
bookmarks: factor out delete logic from commands We keep the lock in the caller so that future devs are aware of the locking implications.
Fri, 23 Jun 2017 15:30:27 -0400 merge with stable
Augie Fackler <augie@google.com> [Fri, 23 Jun 2017 15:30:27 -0400] rev 33004
merge with stable
Sun, 18 Jun 2017 00:40:58 +0900 revset: add startdepth limit to ancestors() as internal option
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 00:40:58 +0900] rev 33003
revset: add startdepth limit to ancestors() as internal option This is necessary to implement the set{gen} (set subscript) operator. For example, set{-n} will be translated to ancestors(set, depth=n, startdepth=n). https://www.mercurial-scm.org/wiki/RevsetOperatorPlan#ideas_from_mpm The UI is undecided and I doubt if the startdepth option would be actually useful, so the option is hidden for now. 'depth' could be extended to take min:max range, in which case, integer depth should select a single generation. ancestors(set, depth=:y) # scan up to y-th generation ancestors(set, depth=x:) # skip until (x-1)-th generation ancestors(set, depth=x) # select only x-th generation Any ideas are welcomed. # reverse(ancestors(tip)) using hg repo 3) 0.075951 4) 0.076175
Sun, 18 Jun 2017 00:22:41 +0900 revset: add depth limit to ancestors()
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 00:22:41 +0900] rev 33002
revset: add depth limit to ancestors() This is proposed by the issue5374, and will be a building block of set{gen} (set subscript) operator. https://www.mercurial-scm.org/wiki/RevsetOperatorPlan#ideas_from_mpm # reverse(ancestors(tip)) using hg repo 2) 0.075408 3) 0.075951
Sun, 18 Jun 2017 00:11:48 +0900 dagop: compute depth in revancestors() generator
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 00:11:48 +0900] rev 33001
dagop: compute depth in revancestors() generator Surprisingly, this makes revset benchmark slightly faster. I don't know why, but it appears that wrapping -inputrev by tuple is the key. So I decided to just enable depth computation by default. # reverse(ancestors(tip)) using hg repo 1) 0.081051 2) 0.075408
Sun, 18 Jun 2017 08:59:09 +0900 dagop: just compare with the last value to deduplicate input of revancestors()
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 08:59:09 +0900] rev 33000
dagop: just compare with the last value to deduplicate input of revancestors() Since we're using a max heap, the current rev should be a duplicate only if it equals to the previous one. We don't have to maintain the whole seen set. # reverse(ancestors(tip)) using hg repo 0) 0.086420 1) 0.081051
Sun, 18 Jun 2017 17:22:57 +0900 dagop: bulk rename variables in revancestors() generator
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 17:22:57 +0900] rev 32999
dagop: bulk rename variables in revancestors() generator - h -> pendingheap: "h" seems too short for variable of long lifetime - current -> currev: future patches will add current "depth" variable - parent -> prev or pctx: short lifetime, follows common naming rules
Sun, 18 Jun 2017 17:16:02 +0900 dagop: comment why revancestors() doesn't heapify input revs at once
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 17:16:02 +0900] rev 32998
dagop: comment why revancestors() doesn't heapify input revs at once I wondered why we're doing this complicated stuff without noticing the input revs may be iterated lazily in descending order. c1f666e27345 showed why.
Sat, 17 Jun 2017 22:33:23 +0900 dagop: unnest inner generator of revancestors()
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Jun 2017 22:33:23 +0900] rev 32997
dagop: unnest inner generator of revancestors() This just moves iterate() to module-level function.
Wed, 21 Jun 2017 17:17:17 +0200 hgweb: plug followlines action in annotate view
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 21 Jun 2017 17:17:17 +0200] rev 32996
hgweb: plug followlines action in annotate view Add the followlines.js script and corresponding parameters as data attribute on <tbody class="sourcelines"> element. Extend CSS rules so that they also match the DOM structure of annotate view. As previously, only address paper and gitweb styles (other styles do not have followlines at all).
Wed, 21 Jun 2017 17:07:51 +0200 hgweb: parameterize the tag name of elements holding followlines selection
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 21 Jun 2017 17:07:51 +0200] rev 32995
hgweb: parameterize the tag name of elements holding followlines selection While plugging followlines.js into "annotate" view, we'll need to walk a different DOM structure from that of "filerevision" view. In particular, the selectable source line element is a <tr> in annotate view (in contrast with a <span> in filerevision view). So make this tag name a parameter of followlines.js script by passing its value as a "selectabletag" data attribute of <pre class="sourcelines"> element. As <pre class="sourcelines"> tags are getting quite long in templates, rewrite them on several lines.
Wed, 21 Jun 2017 17:02:21 +0200 gitweb: wrap table rows of annotate view into a <tbody> element
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 21 Jun 2017 17:02:21 +0200] rev 32994
gitweb: wrap table rows of annotate view into a <tbody> element We will use this element to hook data attribute for the followlines.js script to be plugged in annotate view. Also this gets symmetrical with paper style which already has a <tbody> element.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip