[PATCH 2 of 3] move store walking from streamclone.py into store.py
Matt Mackall
mpm at selenic.com
Mon Jul 21 15:15:13 CDT 2008
On Mon, 2008-07-21 at 21:43 +0200, Adrian Buehlmann wrote:
> # HG changeset patch
> # User Adrian Buehlmann <adrian at cadifra.com>
> # Date 1216645162 -7200
> # Node ID 00e5d2425f873233e06ed3c6631211ce49935c84
> # Parent a7f1babd458d9cb5b6db1b6d326624ab355b4268
> move store walking from streamclone.py into store.py
This is looking quite promising.
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -60,14 +60,9 @@
> if r not in self.supported:
> raise repo.RepoError(_("requirement '%s' not supported") % r)
>
> - # setup store
> if "store" in requirements:
> - self.encodefn = store.encodefilename
> - self.decodefn = store.decodefilename
> self.spath = os.path.join(self.path, "store")
> else:
> - self.encodefn = lambda x: x
> - self.decodefn = lambda x: x
> self.spath = self.path
Seems like we ought to get spath from store.path, no? Then this if logic
can vanish entirely.
> try:
> @@ -81,9 +76,10 @@
>
> self._createmode = mode
> self.opener.createmode = mode
> - sopener = util.opener(self.spath)
> - sopener.createmode = mode
> - self.sopener = store.encodedopener(sopener, self.encodefn)
> +
> + self.store = store.store(requirements, self.spath, mode)
> + self.sopener = self.store.opener
> + self.encodefn = self.store.encodefn
Do we need encodefn for anything? Looks like only for spath. And that
looks like it ought to be a store method. In other words:
self.sjoin = self.store.join
> - self.sopener = store.encodedopener(opener(self.spath), self.encodefn)
> + self.encodefn = store.encodefn(requirements)
> + so = opener(self.spath)
> + self.sopener = lambda path, *args, **kw: so(
> + self.encodefn(path), *args, **kw)
What's happening here? Is there a reason we can't use a store object
here?
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial-devel
mailing list