##// END OF EJS Templates
wireproto: make version 2 @wireprotocommand an independent function...
wireproto: make version 2 @wireprotocommand an independent function Previously, the code for this decorator was shared between version 1 and version 2 commands. Very few parts of the function were identical. So I don't think sharing is justified. wireprotov2server now has its own @wireprotocommand decorator function. Because the decorator is no longer shared, code for configuring the transport policy has been removed. i.e. commands must have separate implementations for each wire protocol version. Differential Revision: https://phab.mercurial-scm.org/D3395

File last commit:

r37398:c3c76194 default
r37798:8acd3a9a default
Show More
narrowrepo.py
65 lines | 2.4 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 (
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)
repo.__class__ = narrowrepository