mercurial/localrepo.py
changeset 1101 2cf5c8a4eae5
parent 1100 d6b6a15cc7c6
child 1102 c81d264cd17d
equal deleted inserted replaced
1100:d6b6a15cc7c6 1101:2cf5c8a4eae5
    11 from demandload import *
    11 from demandload import *
    12 demandload(globals(), "re lock transaction tempfile stat mdiff")
    12 demandload(globals(), "re lock transaction tempfile stat mdiff")
    13 
    13 
    14 class localrepository:
    14 class localrepository:
    15     def __init__(self, ui, opener, path=None, create=0):
    15     def __init__(self, ui, opener, path=None, create=0):
    16         self.remote = 0
    16         if not path:
    17         if path and path.startswith("http://"):
    17             p = os.getcwd()
    18             self.remote = 1
    18             while not os.path.isdir(os.path.join(p, ".hg")):
    19             self.path = path
    19                 oldp = p
    20         else:
    20                 p = os.path.dirname(p)
    21             if not path:
    21                 if p == oldp: raise repo.RepoError("no repo found")
    22                 p = os.getcwd()
    22             path = p
    23                 while not os.path.isdir(os.path.join(p, ".hg")):
    23         self.path = os.path.join(path, ".hg")
    24                     oldp = p
    24 
    25                     p = os.path.dirname(p)
    25         if not create and not os.path.isdir(self.path):
    26                     if p == oldp: raise repo.RepoError("no repo found")
    26             raise repo.RepoError("repository %s not found" % self.path)
    27                 path = p
       
    28             self.path = os.path.join(path, ".hg")
       
    29 
       
    30             if not create and not os.path.isdir(self.path):
       
    31                 raise repo.RepoError("repository %s not found" % self.path)
       
    32 
    27 
    33         self.root = os.path.abspath(path)
    28         self.root = os.path.abspath(path)
    34         self.ui = ui
    29         self.ui = ui
    35 
    30 
    36         if create:
    31         if create:
    42         self.manifest = manifest.manifest(self.opener)
    37         self.manifest = manifest.manifest(self.opener)
    43         self.changelog = changelog.changelog(self.opener)
    38         self.changelog = changelog.changelog(self.opener)
    44         self.tagscache = None
    39         self.tagscache = None
    45         self.nodetagscache = None
    40         self.nodetagscache = None
    46 
    41 
    47         if not self.remote:
    42         self.dirstate = dirstate.dirstate(self.opener, ui, self.root)
    48             self.dirstate = dirstate.dirstate(self.opener, ui, self.root)
    43         try:
    49             try:
    44             self.ui.readconfig(self.opener("hgrc"))
    50                 self.ui.readconfig(self.opener("hgrc"))
    45         except IOError: pass
    51             except IOError: pass
       
    52 
    46 
    53     def hook(self, name, **args):
    47     def hook(self, name, **args):
    54         s = self.ui.config("hooks", name)
    48         s = self.ui.config("hooks", name)
    55         if s:
    49         if s:
    56             self.ui.note("running hook %s: %s\n" % (name, s))
    50             self.ui.note("running hook %s: %s\n" % (name, s))
   140                 return self.changelog.lookup(key)
   134                 return self.changelog.lookup(key)
   141             except:
   135             except:
   142                 raise repo.RepoError("unknown revision '%s'" % key)
   136                 raise repo.RepoError("unknown revision '%s'" % key)
   143 
   137 
   144     def dev(self):
   138     def dev(self):
   145         if self.remote: return -1
       
   146         return os.stat(self.path).st_dev
   139         return os.stat(self.path).st_dev
   147 
   140 
   148     def local(self):
   141     def local(self):
   149         return not self.remote
   142         return True
   150 
   143 
   151     def join(self, f):
   144     def join(self, f):
   152         return os.path.join(self.path, f)
   145         return os.path.join(self.path, f)
   153 
   146 
   154     def wjoin(self, f):
   147     def wjoin(self, f):