mercurial/localrepo.py
changeset 3853 c0b449154a90
parent 3851 8f18e31c4441
child 3854 4f6db0233606
equal deleted inserted replaced
3852:8a9a1a7e1698 3853:c0b449154a90
    14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
    14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
    15 demandload(globals(), "os revlog time util")
    15 demandload(globals(), "os revlog time util")
    16 
    16 
    17 class localrepository(repo.repository):
    17 class localrepository(repo.repository):
    18     capabilities = ('lookup', 'changegroupsubset')
    18     capabilities = ('lookup', 'changegroupsubset')
    19     supported = ('revlogv1',)
    19     supported = ('revlogv1', 'store')
    20 
    20 
    21     def __del__(self):
    21     def __del__(self):
    22         self.transhandle = None
    22         self.transhandle = None
    23     def __init__(self, parentui, path=None, create=0):
    23     def __init__(self, parentui, path=None, create=0):
    24         repo.repository.__init__(self)
    24         repo.repository.__init__(self)
    41         if not os.path.isdir(self.path):
    41         if not os.path.isdir(self.path):
    42             if create:
    42             if create:
    43                 if not os.path.exists(path):
    43                 if not os.path.exists(path):
    44                     os.mkdir(path)
    44                     os.mkdir(path)
    45                 os.mkdir(self.path)
    45                 os.mkdir(self.path)
    46                 #if self.spath != self.path:
    46                 os.mkdir(os.path.join(self.path, "store"))
    47                 #    os.mkdir(self.spath)
    47                 requirements = ("revlogv1", "store")
    48                 requirements = ("revlogv1",)
       
    49                 reqfile = self.opener("requires", "w")
    48                 reqfile = self.opener("requires", "w")
    50                 for r in requirements:
    49                 for r in requirements:
    51                     reqfile.write("%s\n" % r)
    50                     reqfile.write("%s\n" % r)
    52                 reqfile.close()
    51                 reqfile.close()
       
    52                 # create an invalid changelog
       
    53                 self.opener("00changelog.i", "a").write('\0\0\0\2')
    53             else:
    54             else:
    54                 raise repo.RepoError(_("repository %s not found") % path)
    55                 raise repo.RepoError(_("repository %s not found") % path)
    55         elif create:
    56         elif create:
    56             raise repo.RepoError(_("repository %s already exists") % path)
    57             raise repo.RepoError(_("repository %s already exists") % path)
    57         else:
    58         else:
    66         for r in requirements:
    67         for r in requirements:
    67             if r not in self.supported:
    68             if r not in self.supported:
    68                 raise repo.RepoError(_("requirement '%s' not supported") % r)
    69                 raise repo.RepoError(_("requirement '%s' not supported") % r)
    69 
    70 
    70         # setup store
    71         # setup store
    71         self.spath = self.path
    72         if "store" in requirements:
    72         self.sopener = util.opener(self.spath)
    73             self.encodefn = util.encodefilename
       
    74             self.decodefn = util.decodefilename
       
    75             self.spath = os.path.join(self.path, "store")
       
    76         else:
       
    77             self.encodefn = lambda x: x
       
    78             self.decodefn = lambda x: x
       
    79             self.spath = self.path
       
    80         self.sopener = util.encodedopener(util.opener(self.spath), self.encodefn)
    73 
    81 
    74         self.ui = ui.ui(parentui=parentui)
    82         self.ui = ui.ui(parentui=parentui)
    75         try:
    83         try:
    76             self.ui.readconfig(self.join("hgrc"), self.root)
    84             self.ui.readconfig(self.join("hgrc"), self.root)
    77         except IOError:
    85         except IOError:
   418 
   426 
   419     def join(self, f):
   427     def join(self, f):
   420         return os.path.join(self.path, f)
   428         return os.path.join(self.path, f)
   421 
   429 
   422     def sjoin(self, f):
   430     def sjoin(self, f):
       
   431         f = self.encodefn(f)
   423         return os.path.join(self.spath, f)
   432         return os.path.join(self.spath, f)
   424 
   433 
   425     def wjoin(self, f):
   434     def wjoin(self, f):
   426         return os.path.join(self.root, f)
   435         return os.path.join(self.root, f)
   427 
   436