mercurial/bundlerepo.py
changeset 23631 b8260abfeb7d
parent 22182 510cafe72004
child 23632 e7fcf58acd71
equal deleted inserted replaced
23630:b9af235810cc 23631:b8260abfeb7d
    13 
    13 
    14 from node import nullid
    14 from node import nullid
    15 from i18n import _
    15 from i18n import _
    16 import os, tempfile, shutil
    16 import os, tempfile, shutil
    17 import changegroup, util, mdiff, discovery, cmdutil, scmutil, exchange
    17 import changegroup, util, mdiff, discovery, cmdutil, scmutil, exchange
    18 import localrepo, changelog, manifest, filelog, revlog, error
    18 import localrepo, changelog, manifest, filelog, revlog, error, phases
    19 
    19 
    20 class bundlerevlog(revlog.revlog):
    20 class bundlerevlog(revlog.revlog):
    21     def __init__(self, opener, indexfile, bundle, linkmapper):
    21     def __init__(self, opener, indexfile, bundle, linkmapper):
    22         # How it works:
    22         # How it works:
    23         # To retrieve a revision, we need to know the offset of the revision in
    23         # To retrieve a revision, we need to know the offset of the revision in
   182 
   182 
   183 class bundlepeer(localrepo.localpeer):
   183 class bundlepeer(localrepo.localpeer):
   184     def canpush(self):
   184     def canpush(self):
   185         return False
   185         return False
   186 
   186 
       
   187 class bundlephasecache(phases.phasecache):
       
   188     def __init__(self, *args, **kwargs):
       
   189         super(bundlephasecache, self).__init__(*args, **kwargs)
       
   190         if util.safehasattr(self, 'opener'):
       
   191             self.opener = scmutil.readonlyvfs(self.opener)
       
   192 
       
   193     def write(self):
       
   194         raise NotImplementedError
       
   195 
       
   196     def _write(self, fp):
       
   197         raise NotImplementedError
       
   198 
       
   199     def _updateroots(self, phase, newroots, tr):
       
   200         self.phaseroots[phase] = newroots
       
   201         self.invalidate()
       
   202         self.dirty = True
       
   203 
   187 class bundlerepository(localrepo.localrepository):
   204 class bundlerepository(localrepo.localrepository):
   188     def __init__(self, ui, path, bundlename):
   205     def __init__(self, ui, path, bundlename):
   189         self._tempparent = None
   206         self._tempparent = None
   190         try:
   207         try:
   191             localrepo.localrepository.__init__(self, ui, path)
   208             localrepo.localrepository.__init__(self, ui, path)
   222             f = self.vfs.open(self.tempfile, mode="rb")
   239             f = self.vfs.open(self.tempfile, mode="rb")
   223             self.bundle = exchange.readbundle(ui, f, bundlename, self.vfs)
   240             self.bundle = exchange.readbundle(ui, f, bundlename, self.vfs)
   224 
   241 
   225         # dict with the mapping 'filename' -> position in the bundle
   242         # dict with the mapping 'filename' -> position in the bundle
   226         self.bundlefilespos = {}
   243         self.bundlefilespos = {}
       
   244 
       
   245     @localrepo.unfilteredpropertycache
       
   246     def _phasecache(self):
       
   247         return bundlephasecache(self, self._phasedefaults)
   227 
   248 
   228     @localrepo.unfilteredpropertycache
   249     @localrepo.unfilteredpropertycache
   229     def changelog(self):
   250     def changelog(self):
   230         # consume the header if it exists
   251         # consume the header if it exists
   231         self.bundle.changelogheader()
   252         self.bundle.changelogheader()