[PATCH 7 of 7] manifest: remove manifest.add and add memmfctx.write
Augie Fackler
raf at durin42.com
Tue Nov 8 13:40:51 EST 2016
On Tue, Nov 08, 2016 at 08:43:01AM -0800, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1478621023 28800
> # Tue Nov 08 08:03:43 2016 -0800
> # Node ID 23554dcfb163996fa003492385b367aa2c3c0bb1
> # Parent 05bf15311d25783de82dcbe0f93df5963b504357
> manifest: remove manifest.add and add memmfctx.write
Series LG, but I want to let Martin look since he's been in here more frequently.
>
> This removes one more dependency on the manifest class by moving the write
> functionality onto the memmanifestctx classes and changing the one consumer to
> use the new API.
>
> By moving the write path to a manifestctx, we now give the individual manifests
> control over how they're read and serialized. This will be useful in developing
> new manifest formats and storage systems.
>
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -1700,9 +1700,13 @@ class localrepository(object):
> trp = weakref.proxy(tr)
>
> if ctx.files():
> - m1 = p1.manifest()
> - m2 = p2.manifest()
> - m = m1.copy()
> + m1ctx = p1.manifestctx()
> + m2ctx = p2.manifestctx()
> + mctx = m1ctx.copy()
> +
> + m = mctx.read()
> + m1 = m1ctx.read()
> + m2 = m2ctx.read()
>
> # check in files
> added = []
> @@ -1736,9 +1740,9 @@ class localrepository(object):
> drop = [f for f in removed if f in m]
> for f in drop:
> del m[f]
> - mn = self.manifestlog.add(m, trp, linkrev,
> - p1.manifestnode(), p2.manifestnode(),
> - added, drop)
> + mn = mctx.write(trp, linkrev,
> + p1.manifestnode(), p2.manifestnode(),
> + added, drop)
> files = changed + removed
> else:
> mn = p1.manifestnode()
> diff --git a/mercurial/manifest.py b/mercurial/manifest.py
> --- a/mercurial/manifest.py
> +++ b/mercurial/manifest.py
> @@ -1315,14 +1315,14 @@ class manifestlog(object):
> mancache[node] = m
> return m
>
> - def add(self, m, transaction, link, p1, p2, added, removed):
> - return self._revlog.add(m, transaction, link, p1, p2, added, removed)
> -
> class memmanifestctx(object):
> def __init__(self, repo):
> self._repo = repo
> self._manifestdict = manifestdict()
>
> + def _revlog(self):
> + return self._repo.manifestlog._revlog
> +
> def new(self):
> return memmanifestctx(self._repo)
>
> @@ -1334,6 +1334,10 @@ class memmanifestctx(object):
> def read(self):
> return self._manifestdict
>
> + def write(self, transaction, link, p1, p2, added, removed):
> + return self._revlog().add(self._manifestdict, transaction, link, p1, p2,
> + added, removed)
> +
> class manifestctx(object):
> """A class representing a single revision of a manifest, including its
> contents, its parent revs, and its linkrev.
> @@ -1425,6 +1429,9 @@ class memtreemanifestctx(object):
> self._dir = dir
> self._treemanifest = treemanifest()
>
> + def _revlog(self):
> + return self._repo.manifestlog._revlog
> +
> def new(self, dir=''):
> return memtreemanifestctx(self._repo, dir=dir)
>
> @@ -1436,6 +1443,10 @@ class memtreemanifestctx(object):
> def read(self):
> return self._treemanifest
>
> + def write(self, transaction, link, p1, p2, added, removed):
> + return self._revlog().add(self._treemanifest, transaction, link, p1, p2,
> + added, removed)
> +
> class treemanifestctx(object):
> def __init__(self, repo, dir, node):
> self._repo = repo
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list