##// END OF EJS Templates
cleanup: migrate from re.escape to stringutil.reescape...
cleanup: migrate from re.escape to stringutil.reescape This has consistent behavior on Python 2.7, 3.6, and 3.7 and has the benefit of probably being a little faster. Test output changes are largely because / used to be pointlessly escaped. Differential Revision: https://phab.mercurial-scm.org/D3842

File last commit:

r38142:1cba4974 default
r38494:67dc32d4 @56 default
Show More
narrowrepo.py
70 lines | 2.6 KiB | text/x-python | PythonLexer
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 # 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 (
Martin von Zweigbergk
narrow: move requirement constant to core...
r36482 changegroup,
Gregory Szorc
hg: move share._getsrcrepo into core...
r36177 hg,
Gregory Szorc
narrowspec: move module into core...
r36178 narrowspec,
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 scmutil,
)
from . import (
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 narrowdirstate,
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 narrowrevlog,
)
def wrappostshare(orig, sourcerepo, destrepo, **kwargs):
orig(sourcerepo, destrepo, **kwargs)
Martin von Zweigbergk
narrow: move requirement constant to core...
r36482 if changegroup.NARROW_REQUIREMENT in sourcerepo.requirements:
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 with destrepo.wlock():
with destrepo.vfs('shared', 'a') as fp:
fp.write(narrowspec.FILENAME + '\n')
def unsharenarrowspec(orig, ui, repo, repopath):
Martin von Zweigbergk
narrow: move requirement constant to core...
r36482 if (changegroup.NARROW_REQUIREMENT in repo.requirements
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 and repo.path == repopath and repo.shared()):
Gregory Szorc
hg: move share._getsrcrepo into core...
r36177 srcrepo = hg.sharedreposource(repo)
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 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)
Martin von Zweigbergk
narrow: move checking for narrow requirement into _narrowmatch()...
r36484 def wraprepo(repo):
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 """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()
Augie Fackler
narrowrepo: filter() is a generator on py3, wrap in list()...
r36173 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))
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 return scmutil.status(modified, added, removed, deleted, unknown,
ignored, clean)
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 def _makedirstate(self):
dirstate = super(narrowrepository, self)._makedirstate()
return narrowdirstate.wrapdirstate(self, dirstate)
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 repo.__class__ = narrowrepository