Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 08 Aug 2018 13:56:53 +0300] rev 39247
narrow: add a --narrowspec flag to clone command
This patch adds a --narrowspec flag to `hg clone` command in narrow extension
which can be used to read a file and parse narrowspecs from it and use it while
cloning a repository.
The --narrowspec flag assumes that the user wanted to narrow the clone.
Tests are added both for ellipsis and non-ellipsis mode.
Differential Revision: https://phab.mercurial-scm.org/D4156
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 16:01:19 -0700] rev 39246
manifest: use rev() instead of nodemap.__contains__
nodemap is an implementation detail of revlogs and isn't
appropriate to expose on the manifest storage API.
While revlogs don't have a __contains__, they do have lookup()
for resolving a value to a node. And this calls rev(), whose API
is documented to raise LookupError if a node doesn't exist. And
the parameters to LookupError are identical to what was being
raised here. So this change should be backwards compatible.
Differential Revision: https://phab.mercurial-scm.org/D4279
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 15:06:41 -0700] rev 39245
manifest: rename manifestlog._treeinmem to ._treemanifests
Not sure what "inmem" was supposed to indicate. This object is an
interface to manifest data on disk as well as "in memory" (assuming
that's what "inmem" means).
Differential Revision: https://phab.mercurial-scm.org/D4278
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 15:01:06 -0700] rev 39244
manifest: add getstorage() to manifestlog and use it globally
It is a common pattern to obtain a directory manifest storage instance
(a manifestrevlog) by going through manifestlog._revlog.dirlog().
Why access to storage and caching of other manifests is done through
manifestrevlog instead of manifestlog, I don't know.
This commit establishes a getstorage(tree) API on manifestlog and
imanifestlog that provides a public API for accessing manifest storage.
All consumers previously using private attributes have been updated
to use this new method.
.. api:: manifestlog now has a getstorage(tree) method
It should be used for obtaining an object representing the
manifest's storage implementation. Accessing
manifestlog._revlog should be avoided.
Differential Revision: https://phab.mercurial-scm.org/D4277
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 14:44:50 -0700] rev 39243
manifest: rename dir argument and attribute to tree
dir shadows a built-in. We use it throughout the manifest code, which
is unfortunate.
This commit updates just manifestrevlog to be more well behaved.
.. api:: renamed manifest.manifestrevlog.__init__ dir argument to tree
Differential Revision: https://phab.mercurial-scm.org/D4276
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 14:40:02 -0700] rev 39242
manifest: set appropriate cache entry when clearing _dirlogcache()
manifestrevlog applies to any manifest, not just the root manifest.
Resetting the cache and populating its root entry with self is not
correct when the instance does not refer to the root manifest.
This has no test fallout. So I'm guessing we only ever call
clearcaches() on the root manifest. Or we have no test coverage that
are impacted by a bad cache on a non-root manifestrevlog.
Differential Revision: https://phab.mercurial-scm.org/D4275
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 14:20:47 -0700] rev 39241
manifest: remove addgroup() from manifestlog and imanifestlog
addgroup() is part of the storage interface for manifests.
Unfortunately, we don't yet have a formal storage interface
for manifests. (One will be established in subsequent commits.)
One thing is for sure, addgroup() doesn't belong on imanifestlog -
at least not unless we extend that interface to encompass storage.
For now, let's access addgroup() on the _revlog attribute, just like
we do for tree manifests. Even though this violates visibility,
it is consistent.
Differential Revision: https://phab.mercurial-scm.org/D4274
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 13:59:27 -0700] rev 39240
repository: clarify role of imanifestlog
Looking at the implementation of manifest.manifestlog, it is highly
tailored towards servicing the root manifest. So clarify that in the
interface docstring.
Differential Revision: https://phab.mercurial-scm.org/D4273
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 13:43:26 -0700] rev 39239
changegroup: change topics during generation
Changegroup generation and consumption currently uses different sets of
topics. Generation uses "bundling" and consumption uses the name of the
thing being consumed.
This commit makes the topic and unit names consistent on both ends.
The reason I chose to change the generation side is because when
"bundling" is used for 3 different stages, it is unclear which stage
of changegroup generation we're in. By making the topics "changesets,"
"manifests," and "files," one can get a better feel for how far along
in the bundling process we are.
Differential Revision: https://phab.mercurial-scm.org/D4272
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 12:44:15 -0700] rev 39238
changegroup: rename mfs to manifests
In the name of readability.
Differential Revision: https://phab.mercurial-scm.org/D4271
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 12:42:00 -0700] rev 39237
changegroup: clean up changelog callback
changelog.read() calls changelog.changelogrevion() then turns it into
a tuple. Let's call changelogrevision() directly and used named
attributes to make code easier to read.
While we're here, also change some variable names to make code easier
to read.
Differential Revision: https://phab.mercurial-scm.org/D4270
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 12:08:45 -0700] rev 39236
changegroup: call rev() on manifestlog instance
rev() is part of the imanifestlog interface and should be used instead
of using the private revlog instance, which is an implementation
detail.
Differential Revision: https://phab.mercurial-scm.org/D4269
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Aug 2018 11:00:06 -0700] rev 39235
manifest: rename dir to tree to avoid shadowing built-in
And update the argument name in the imanifestlog interface.
Differential Revision: https://phab.mercurial-scm.org/D4268
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Aug 2018 19:27:54 -0700] rev 39234
repository: remove candelta() from ifileindex
candelta() was previously called by changegroup code. With delta
generation moved to the storage API, there are no more external
consumers of this method and it can be removed from the storage
interface.
Differential Revision: https://phab.mercurial-scm.org/D4236
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Aug 2018 19:30:36 -0700] rev 39233
changegroup: rename dir to tree to avoid shadowing a built-in
Differential Revision: https://phab.mercurial-scm.org/D4235