mercurial/localrepo.py
changeset 2072 74d3f5336b66
parent 2042 a514c7509fa9
child 2073 1e6745f78989
equal deleted inserted replaced
2042:a514c7509fa9 2072:74d3f5336b66
     8 import os, util
     8 import os, util
     9 import filelog, manifest, changelog, dirstate, repo
     9 import filelog, manifest, changelog, dirstate, repo
    10 from node import *
    10 from node import *
    11 from i18n import gettext as _
    11 from i18n import gettext as _
    12 from demandload import *
    12 from demandload import *
    13 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
       
    14 demandload(globals(), "appendfile changegroup")
    13 demandload(globals(), "appendfile changegroup")
       
    14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui revlog")
    15 
    15 
    16 class localrepository(object):
    16 class localrepository(object):
    17     def __del__(self):
    17     def __del__(self):
    18         self.transhandle = None
    18         self.transhandle = None
    19     def __init__(self, parentui, path=None, create=0):
    19     def __init__(self, parentui, path=None, create=0):
    33         self.root = os.path.abspath(path)
    33         self.root = os.path.abspath(path)
    34         self.origroot = path
    34         self.origroot = path
    35         self.ui = ui.ui(parentui=parentui)
    35         self.ui = ui.ui(parentui=parentui)
    36         self.opener = util.opener(self.path)
    36         self.opener = util.opener(self.path)
    37         self.wopener = util.opener(self.root)
    37         self.wopener = util.opener(self.root)
    38         self.manifest = manifest.manifest(self.opener)
    38 
    39         self.changelog = changelog.changelog(self.opener)
    39         try:
       
    40             self.ui.readconfig(self.join("hgrc"), self.root)
       
    41         except IOError:
       
    42             pass
       
    43 
       
    44         v = self.ui.revlogopts
       
    45         self.revlogversion = int(v.get('format', 0))
       
    46         for x in v.get('flags', "").split():
       
    47             self.revlogversion |= revlog.flagstr(x)
       
    48 
       
    49         self.manifest = manifest.manifest(self.opener, self.revlogversion)
       
    50         self.changelog = changelog.changelog(self.opener, self.revlogversion)
       
    51         self.revlogversion = self.changelog.version
    40         self.tagscache = None
    52         self.tagscache = None
    41         self.nodetagscache = None
    53         self.nodetagscache = None
    42         self.encodepats = None
    54         self.encodepats = None
    43         self.decodepats = None
    55         self.decodepats = None
    44         self.transhandle = None
    56         self.transhandle = None
    46         if create:
    58         if create:
    47             os.mkdir(self.path)
    59             os.mkdir(self.path)
    48             os.mkdir(self.join("data"))
    60             os.mkdir(self.join("data"))
    49 
    61 
    50         self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
    62         self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
    51         try:
       
    52             self.ui.readconfig(self.join("hgrc"), self.root)
       
    53         except IOError:
       
    54             pass
       
    55 
       
    56     def hook(self, name, throw=False, **args):
    63     def hook(self, name, throw=False, **args):
    57         def runhook(name, cmd):
    64         def runhook(name, cmd):
    58             self.ui.note(_("running hook %s: %s\n") % (name, cmd))
    65             self.ui.note(_("running hook %s: %s\n") % (name, cmd))
    59             env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()] +
    66             env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()] +
    60                        [(k.upper(), v) for k, v in args.iteritems()])
    67                        [(k.upper(), v) for k, v in args.iteritems()])
   165         return os.path.join(self.root, f)
   172         return os.path.join(self.root, f)
   166 
   173 
   167     def file(self, f):
   174     def file(self, f):
   168         if f[0] == '/':
   175         if f[0] == '/':
   169             f = f[1:]
   176             f = f[1:]
   170         return filelog.filelog(self.opener, f)
   177         return filelog.filelog(self.opener, f, self.revlogversion)
   171 
   178 
   172     def getcwd(self):
   179     def getcwd(self):
   173         return self.dirstate.getcwd()
   180         return self.dirstate.getcwd()
   174 
   181 
   175     def wfile(self, f, mode='r'):
   182     def wfile(self, f, mode='r'):