Thu, 15 Jun 2017 00:15:52 -0700 strip: include phases in bundle (BC)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 00:15:52 -0700] rev 33032
strip: include phases in bundle (BC) Before this patch, unbundling a stripped changeset would make it a draft (unless the parent was secret). This meant that one would lose phase information when stripping and unbundling secret changesets. The same thing was true for public changesets. While stripping public changesets is generally rare, it's done frequently by e.g. the narrowhg extension. We also include the phases in the temporary bundle, just in case stripping were to fail after that point, so the user can still restore the repo including phase information. Before this patch, the phases were left untouched during the bundling and unbundling of the temporary bundle. Only at the end of the transaction would phasecache.filterunknown() be called to remove phase roots that were no longer valid. We now need to call that also after the first stripping, i.e. before applying the temporary bundle. Otherwise unbundling the temporary bundle will cause a read of the phase cache which has stripped changesets in the cache and that fails. Like with obsmarkers, we unconditionally include the phases in the bundle when stripping (when using bundle2, such as when generaldelta is enabled). The reason for doing that for strip but not for bundle is that strip bundles are not meant to be shared outside the repo, so we don't care as much about compatibility.
Thu, 22 Jun 2017 10:10:02 -0700 bundle: add config option to include phases
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jun 2017 10:10:02 -0700] rev 33031
bundle: add config option to include phases This adds an experimental.bundle-phases config option to include phase information in bundles. As with the recently added support for bundling obsmarkers, the support for bundling phases is hidden behind the config option until we decide to make a bundlespec v3 that includes phases (and obsmarkers and ...). We could perhaps use the listkeys format for this, but that's considered obsolete according to Pierre-Yves. Instead, we introduce a new "phase-heads" bundle part. The new part contains the phase heads among the set of bundled revisions. It does not include those in secret phase; any head in the bundle that is not mentioned in the phase-heads part is assumed to be secret. As a special case, an empty phase-heads part thus means that any changesets should be added in secret phase. (If we ever add a fourth phase, we'll include secret in the part and we'll add a version number.) For now, phases are only included by "hg bundle", and not by e.g. strip and rebase.
Fri, 16 Jun 2017 16:56:16 -0700 bundle2: record changegroup data in 'op.records' (API)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 16:56:16 -0700] rev 33030
bundle2: record changegroup data in 'op.records' (API) When adding support for bundling and unbundling phases, it will be useful to have the list of added changesets. To do that, we return the list from changegroup.apply().
Thu, 22 Jun 2017 10:15:15 -0700 debugcommands: pass part, not read data, into _debugobsmarker()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jun 2017 10:15:15 -0700] rev 33029
debugcommands: pass part, not read data, into _debugobsmarker() This matches how it's done for _debugchangegroup() and how we will soon do it for _debugphaseheads().
Thu, 22 Jun 2017 10:09:58 -0700 debugcommands: remove unused "all" argument from _debugobsmarkers
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jun 2017 10:09:58 -0700] rev 33028
debugcommands: remove unused "all" argument from _debugobsmarkers
Fri, 23 Jun 2017 22:15:22 -0700 dagop: raise ProgrammingError if stopdepth < 0
Martin von Zweigbergk <martinvonz@google.com> [Fri, 23 Jun 2017 22:15:22 -0700] rev 33027
dagop: raise ProgrammingError if stopdepth < 0 revset.py should never send such a value.
Fri, 23 Jun 2017 13:33:41 +0800 make: add Debian 9 (Stretch) docker target stable
Anton Shestakov <av6@dwimlabs.net> [Fri, 23 Jun 2017 13:33:41 +0800] rev 33026
make: add Debian 9 (Stretch) docker target
Fri, 23 Jun 2017 13:08:46 +0800 make: templatize Debian build target a la e63dfbbdbd07 stable
Anton Shestakov <av6@dwimlabs.net> [Fri, 23 Jun 2017 13:08:46 +0800] rev 33025
make: templatize Debian build target a la e63dfbbdbd07
Fri, 23 Jun 2017 12:04:12 +0800 make: add Ubuntu Zesty docker targets (.deb and ppa) stable
Anton Shestakov <av6@dwimlabs.net> [Fri, 23 Jun 2017 12:04:12 +0800] rev 33024
make: add Ubuntu Zesty docker targets (.deb and ppa) Zesty Zapus was released on 2017-04-13 and will be supported until 2018-01.
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
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip