##// END OF EJS Templates
localrepo: move some vfs initialization out of __init__...
Gregory Szorc -
r39724:2f9cdb5b default
parent child Browse files
Show More
@@ -386,7 +386,18 b' def makelocalrepository(ui, path, intent'
386 386 The returned object conforms to the ``repository.completelocalrepository``
387 387 interface.
388 388 """
389 return localrepository(ui, path, intents=intents)
389 # Working directory VFS rooted at repository root.
390 wdirvfs = vfsmod.vfs(path, expandpath=True, realpath=True)
391
392 # Main VFS for .hg/ directory.
393 hgpath = wdirvfs.join(b'.hg')
394 hgvfs = vfsmod.vfs(hgpath, cacheaudited=True)
395
396 return localrepository(
397 ui, path,
398 wdirvfs=wdirvfs,
399 hgvfs=hgvfs,
400 intents=intents)
390 401
391 402 @interfaceutil.implementer(repository.completelocalrepository)
392 403 class localrepository(object):
@@ -438,30 +449,51 b' class localrepository(object):'
438 449 'bisect.state',
439 450 }
440 451
441 def __init__(self, baseui, path, intents=None):
452 def __init__(self, baseui, origroot, wdirvfs, hgvfs, intents=None):
442 453 """Create a new local repository instance.
443 454
444 Most callers should use ``hg.repository()`` or ``localrepo.instance()``
445 for obtaining a new repository object.
455 Most callers should use ``hg.repository()``, ``localrepo.instance()``,
456 or ``localrepo.makelocalrepository()`` for obtaining a new repository
457 object.
458
459 Arguments:
460
461 baseui
462 ``ui.ui`` instance to use. A copy will be made (since new config
463 options may be loaded into it).
464
465 origroot
466 ``bytes`` path to working directory root of this repository.
467
468 wdirvfs
469 ``vfs.vfs`` rooted at the working directory.
470
471 hgvfs
472 ``vfs.vfs`` rooted at .hg/
473
474 intents
475 ``set`` of system strings indicating what this repo will be used
476 for.
446 477 """
478 self.baseui = baseui
479 self.ui = baseui.copy()
480 self.ui.copy = baseui.copy # prevent copying repo configuration
481
482 self.origroot = origroot
483 # vfs rooted at working directory.
484 self.wvfs = wdirvfs
485 self.root = wdirvfs.base
486 # vfs rooted at .hg/. Used to access most non-store paths.
487 self.vfs = hgvfs
488 self.path = hgvfs.base
447 489
448 490 self.requirements = set()
449 491 self.filtername = None
450 # wvfs: rooted at the repository root, used to access the working copy
451 self.wvfs = vfsmod.vfs(path, expandpath=True, realpath=True)
452 # vfs: rooted at .hg, used to access repo files outside of .hg/store
453 self.vfs = None
454 492 # svfs: usually rooted at .hg/store, used to access repository history
455 493 # If this is a shared repository, this vfs may point to another
456 494 # repository's .hg/store directory.
457 495 self.svfs = None
458 self.root = self.wvfs.base
459 self.path = self.wvfs.join(".hg")
460 self.origroot = path
461 self.baseui = baseui
462 self.ui = baseui.copy()
463 self.ui.copy = baseui.copy # prevent copying repo configuration
464 self.vfs = vfsmod.vfs(self.path, cacheaudited=True)
496
465 497 if (self.ui.configbool('devel', 'all-warnings') or
466 498 self.ui.configbool('devel', 'check-locks')):
467 499 self.vfs.audit = self._getvfsward(self.vfs.audit)
@@ -498,7 +530,7 b' class localrepository(object):'
498 530 except OSError as inst:
499 531 if inst.errno != errno.ENOENT:
500 532 raise
501 raise error.RepoError(_("repository %s not found") % path)
533 raise error.RepoError(_("repository %s not found") % origroot)
502 534 else:
503 535 try:
504 536 self.requirements = scmutil.readrequires(
General Comments 0
You need to be logged in to leave comments. Login now