narrowrepo.py
33 lines
| 930 B
| text/x-python
|
PythonLexer
|
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 | ||||
|
r39969 | from mercurial import ( | ||
wireprotoserver, | ||||
) | ||||
|
r36096 | from . import ( | ||
|
r38142 | narrowdirstate, | ||
|
r36096 | ) | ||
|
r36484 | def wraprepo(repo): | ||
|
r36096 | """Enables narrow clone functionality on a single local repository.""" | ||
class narrowrepository(repo.__class__): | ||||
|
r38142 | def _makedirstate(self): | ||
dirstate = super(narrowrepository, self)._makedirstate() | ||||
return narrowdirstate.wrapdirstate(self, dirstate) | ||||
|
r39564 | def peer(self): | ||
peer = super(narrowrepository, self).peer() | ||||
|
r39969 | peer._caps.add(wireprotoserver.NARROWCAP) | ||
|
r39970 | peer._caps.add(wireprotoserver.ELLIPSESCAP) | ||
|
r39564 | return peer | ||
|
r36096 | repo.__class__ = narrowrepository | ||