Fri, 05 Oct 2018 11:07:34 -0700 narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Oct 2018 11:07:34 -0700] rev 40344
narrow: when widening, don't include manifests the client already has When widening, we already don't include the changelog (since f1844a10ee19) and files that the client already has (since c73c7653dfb9). However, we still include all manifests needed for the new narrowspec. When using flat manifests, that means we resend all the manifests even though the client necessarily has all of them. For tree manifests, we unnecessarily resend the root manifests and any subdirectory manifests that the client already has. This patch makes it so we no longer resend manifests that the client already has. It does so by passing an extra matcher to the changegroup packer and it uses that for filtering out directories matching the old matcher's visitdir(). For consistency between directories and files, it also makes the filtering of files look at both old and new matcher rather than passing in a diff matcher as we did before. Differential Revision: https://phab.mercurial-scm.org/D4895
Wed, 17 Oct 2018 09:30:07 -0700 tests: add test for widening from an empty clone
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 Oct 2018 09:30:07 -0700] rev 40343
tests: add test for widening from an empty clone Narrow clones that track no paths currently don't even include the root manifest (which is the only manifest when using flat manifests). That means that when we widen from such a clone, we need to make sure that we send the root manifest (and other manifests if using tree manifests). That currently works because we always resend all manifest that match the new narrowspec. However, we're about to stop resending manifests that the client already has and there's a risk of this breaking then, so let's add a test. Differential Revision: https://phab.mercurial-scm.org/D5143
Wed, 17 Oct 2018 11:43:39 -0700 subrepo: access status members by name instead of by position
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 Oct 2018 11:43:39 -0700] rev 40342
subrepo: access status members by name instead of by position Taking my first Mercurial project closer to completion. Differential Revision: https://phab.mercurial-scm.org/D5144
Tue, 16 Oct 2018 07:21:00 -0700 revisions: when using prefixhexnode, ensure we prefix "0"
Kyle Lippincott <spectral@google.com> [Tue, 16 Oct 2018 07:21:00 -0700] rev 40341
revisions: when using prefixhexnode, ensure we prefix "0" Previously, if using `experimental.revisions.disambiguatewithin` (and it didn't include rev0), and '0' was the shortest identifier in that disambiguation set, we printed it as the shortest *without* a prefix. This was because we had logic to determine "if the prefix is a pure integer, but starts with 0, we don't need to prefix with 'x': 01 is not a synonym for revision #1", but didn't handle the case where prefix == 0 (which is a pure integer, and starts with 0... but it *is* "rev0"). Differential Revision: https://phab.mercurial-scm.org/D5113
Wed, 03 Oct 2018 16:45:24 +0300 store: pass matcher to store.datafiles()
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 03 Oct 2018 16:45:24 +0300] rev 40340
store: pass matcher to store.datafiles() To get narrow stream clones working, we need a way to filter the storage files using a matcher. This patch adds matcher as an argument to store.walk() and store.datafiles() so that we can filter the files returned according to the matcher. Differential Revision: https://phab.mercurial-scm.org/D4850
Wed, 03 Oct 2018 17:59:05 +0300 streamclone: pass narrowing related info in _walkstreamfiles()
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 03 Oct 2018 17:59:05 +0300] rev 40339
streamclone: pass narrowing related info in _walkstreamfiles() This patch build a matcher using the include and exclude arguments we have in generatev2() and pass that matcher into _walkstreamfiles(). This will help us in filtering files we stream depending on the includes and excludes passed in by the user. Differential Revision: https://phab.mercurial-scm.org/D4851
Wed, 26 Sep 2018 17:20:04 +0300 streamclone: new server config and some API changes for narrow stream clones
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 26 Sep 2018 17:20:04 +0300] rev 40338
streamclone: new server config and some API changes for narrow stream clones This patch introduces a new server config `experimental.server.stream-narrow-clones` which if set to True will advertise that the server supports narrow stream clones. This patch also pass on the includes and excludes from getbundle command to streamclone generation code. There is a test added to show that the includepats and excludepats are correctly passed. Upcoming patches will implement storage layer filtering for streamclones and then we can remove the temporary error and plug in the whole logic together to make narrow stream clones working. Differential Revision: https://phab.mercurial-scm.org/D5137
Wed, 10 Oct 2018 17:36:59 +0300 narrow: only send the narrowspecs back if ACL in play
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 10 Oct 2018 17:36:59 +0300] rev 40337
narrow: only send the narrowspecs back if ACL in play I am unable to think why we need to send narrowspecs back from the server. The current state adds a 'narrow:spec' part to each changegroup which is generated when narrow extension is enabled. So we are sending narrowspecs on pull also. There is a problem with sending the narrowspecs the way we are doing it right now. We add include and exclude as parameter of the 'narrow:spec' bundle2 part. The the len of include or exclude string increase 255 which is obvious while working on large repos, bundle2 generation code breaks. For more on that refer issue5952 on bugzilla. I was thinking why we need to send the narrowspecs back, and deleted the 'narrow:spec' bundle2 part generation code and found that only narrow-acl test has some failure. With this patch, we will only send the 'narrow:spec' bundle2 part if ACL is enabled because the original narrowspecs in those cases can be a subset of narrowspecs user requested. There are phase related output change in couple of tests. The output change shows that we are now dealing in public phases completely. So maybe sending the narrow:spec bundle2 part was preventing phases being exchanged or phase bundle2 data being applied. Differential Revision: https://phab.mercurial-scm.org/D4931
Wed, 17 Oct 2018 22:32:50 +0800 zsh_completion: add -l/--list flag for hg bookmarks completion
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 22:32:50 +0800] rev 40336
zsh_completion: add -l/--list flag for hg bookmarks completion Flags in parentheses are mutually exclusive. Logic is taken from commands.py: selactions = [k for k in ['delete', 'rename', 'list'] if opts.get(k)] if len(selactions) > 1: raise error.Abort(_('--%s and --%s are incompatible') % tuple(selactions[:2])) ... if rev and action in {'delete', 'rename', 'list'}: raise error.Abort(_("--rev is incompatible with --%s") % action) if inactive and action in {'delete', 'list'}: raise error.Abort(_("--inactive is incompatible with --%s") % action) Differential Revision: https://phab.mercurial-scm.org/D5142
Wed, 17 Oct 2018 22:31:34 +0800 zsh_completion: fix a couple of flags still not being perfect
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 22:31:34 +0800] rev 40335
zsh_completion: fix a couple of flags still not being perfect Differential Revision: https://phab.mercurial-scm.org/D5141
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip