Mercurial > hg
view hgext/narrow/narrowrepo.py @ 37908:8808d5d401ee
templates: split getgraphnode() body into two functions
getgraphnodecurrent() is checking if the node is currently checked out and
getgraphnodesymbol() is checking properties that have more to do with the
stored data and the DAG.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Tue, 08 May 2018 17:54:57 +0800 |
parents | c3c76194f0c1 |
children | 1cba497491be |
line wrap: on
line source
# narrowrepo.py - repository which supports narrow revlogs, lazy loading # # Copyright 2017 Google, Inc. # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import from mercurial import ( changegroup, hg, narrowspec, scmutil, ) from . import ( narrowrevlog, ) def wrappostshare(orig, sourcerepo, destrepo, **kwargs): orig(sourcerepo, destrepo, **kwargs) if changegroup.NARROW_REQUIREMENT in sourcerepo.requirements: with destrepo.wlock(): with destrepo.vfs('shared', 'a') as fp: fp.write(narrowspec.FILENAME + '\n') def unsharenarrowspec(orig, ui, repo, repopath): if (changegroup.NARROW_REQUIREMENT in repo.requirements and repo.path == repopath and repo.shared()): srcrepo = hg.sharedreposource(repo) with srcrepo.vfs(narrowspec.FILENAME) as f: spec = f.read() with repo.vfs(narrowspec.FILENAME, 'w') as f: f.write(spec) return orig(ui, repo, repopath) def wraprepo(repo): """Enables narrow clone functionality on a single local repository.""" class narrowrepository(repo.__class__): def file(self, f): fl = super(narrowrepository, self).file(f) narrowrevlog.makenarrowfilelog(fl, self.narrowmatch()) return fl # I'm not sure this is the right place to do this filter. # context._manifestmatches() would probably be better, or perhaps # move it to a later place, in case some of the callers do want to know # which directories changed. This seems to work for now, though. def status(self, *args, **kwargs): s = super(narrowrepository, self).status(*args, **kwargs) narrowmatch = self.narrowmatch() modified = list(filter(narrowmatch, s.modified)) added = list(filter(narrowmatch, s.added)) removed = list(filter(narrowmatch, s.removed)) deleted = list(filter(narrowmatch, s.deleted)) unknown = list(filter(narrowmatch, s.unknown)) ignored = list(filter(narrowmatch, s.ignored)) clean = list(filter(narrowmatch, s.clean)) return scmutil.status(modified, added, removed, deleted, unknown, ignored, clean) repo.__class__ = narrowrepository