374 # The function receives a set of requirement strings that the repository |
374 # The function receives a set of requirement strings that the repository |
375 # is capable of opening. Functions will typically add elements to the |
375 # is capable of opening. Functions will typically add elements to the |
376 # set to reflect that the extension knows how to handle that requirements. |
376 # set to reflect that the extension knows how to handle that requirements. |
377 featuresetupfuncs = set() |
377 featuresetupfuncs = set() |
378 |
378 |
379 def makelocalrepository(ui, path, intents=None): |
379 def makelocalrepository(baseui, path, intents=None): |
380 """Create a local repository object. |
380 """Create a local repository object. |
381 |
381 |
382 Given arguments needed to construct a local repository, this function |
382 Given arguments needed to construct a local repository, this function |
383 derives a type suitable for representing that repository and returns an |
383 derives a type suitable for representing that repository and returns an |
384 instance of it. |
384 instance of it. |
385 |
385 |
386 The returned object conforms to the ``repository.completelocalrepository`` |
386 The returned object conforms to the ``repository.completelocalrepository`` |
387 interface. |
387 interface. |
388 """ |
388 """ |
|
389 ui = baseui.copy() |
|
390 # Prevent copying repo configuration. |
|
391 ui.copy = baseui.copy |
|
392 |
389 # Working directory VFS rooted at repository root. |
393 # Working directory VFS rooted at repository root. |
390 wdirvfs = vfsmod.vfs(path, expandpath=True, realpath=True) |
394 wdirvfs = vfsmod.vfs(path, expandpath=True, realpath=True) |
391 |
395 |
392 # Main VFS for .hg/ directory. |
396 # Main VFS for .hg/ directory. |
393 hgpath = wdirvfs.join(b'.hg') |
397 hgpath = wdirvfs.join(b'.hg') |
394 hgvfs = vfsmod.vfs(hgpath, cacheaudited=True) |
398 hgvfs = vfsmod.vfs(hgpath, cacheaudited=True) |
395 |
399 |
396 return localrepository( |
400 return localrepository( |
397 ui, path, |
401 baseui=baseui, |
|
402 ui=ui, |
|
403 origroot=path, |
398 wdirvfs=wdirvfs, |
404 wdirvfs=wdirvfs, |
399 hgvfs=hgvfs, |
405 hgvfs=hgvfs, |
400 intents=intents) |
406 intents=intents) |
401 |
407 |
402 @interfaceutil.implementer(repository.completelocalrepository) |
408 @interfaceutil.implementer(repository.completelocalrepository) |
447 # this changeset was introduced. Someone should fix |
453 # this changeset was introduced. Someone should fix |
448 # the remainig bit and drop this line |
454 # the remainig bit and drop this line |
449 'bisect.state', |
455 'bisect.state', |
450 } |
456 } |
451 |
457 |
452 def __init__(self, baseui, origroot, wdirvfs, hgvfs, intents=None): |
458 def __init__(self, baseui, ui, origroot, wdirvfs, hgvfs, intents=None): |
453 """Create a new local repository instance. |
459 """Create a new local repository instance. |
454 |
460 |
455 Most callers should use ``hg.repository()``, ``localrepo.instance()``, |
461 Most callers should use ``hg.repository()``, ``localrepo.instance()``, |
456 or ``localrepo.makelocalrepository()`` for obtaining a new repository |
462 or ``localrepo.makelocalrepository()`` for obtaining a new repository |
457 object. |
463 object. |
458 |
464 |
459 Arguments: |
465 Arguments: |
460 |
466 |
461 baseui |
467 baseui |
462 ``ui.ui`` instance to use. A copy will be made (since new config |
468 ``ui.ui`` instance that ``ui`` argument was based off of. |
463 options may be loaded into it). |
469 |
|
470 ui |
|
471 ``ui.ui`` instance for use by the repository. |
464 |
472 |
465 origroot |
473 origroot |
466 ``bytes`` path to working directory root of this repository. |
474 ``bytes`` path to working directory root of this repository. |
467 |
475 |
468 wdirvfs |
476 wdirvfs |
474 intents |
482 intents |
475 ``set`` of system strings indicating what this repo will be used |
483 ``set`` of system strings indicating what this repo will be used |
476 for. |
484 for. |
477 """ |
485 """ |
478 self.baseui = baseui |
486 self.baseui = baseui |
479 self.ui = baseui.copy() |
487 self.ui = ui |
480 self.ui.copy = baseui.copy # prevent copying repo configuration |
|
481 |
|
482 self.origroot = origroot |
488 self.origroot = origroot |
483 # vfs rooted at working directory. |
489 # vfs rooted at working directory. |
484 self.wvfs = wdirvfs |
490 self.wvfs = wdirvfs |
485 self.root = wdirvfs.base |
491 self.root = wdirvfs.base |
486 # vfs rooted at .hg/. Used to access most non-store paths. |
492 # vfs rooted at .hg/. Used to access most non-store paths. |