comparison mercurial/localrepo.py @ 8799:87d1fd40f57e

repo: add internal support for sharing store directories set .hg/sharedpath to point to the .hg to share with
author Matt Mackall <mpm@selenic.com>
date Sat, 13 Jun 2009 18:01:46 -0500
parents 9ed150d2fbd5
children db3c1ab0e632
comparison
equal deleted inserted replaced
8798:92fc57c9f9d1 8799:87d1fd40f57e
17 import weakref, stat, errno, os, time, inspect 17 import weakref, stat, errno, os, time, inspect
18 propertycache = util.propertycache 18 propertycache = util.propertycache
19 19
20 class localrepository(repo.repository): 20 class localrepository(repo.repository):
21 capabilities = set(('lookup', 'changegroupsubset', 'branchmap')) 21 capabilities = set(('lookup', 'changegroupsubset', 'branchmap'))
22 supported = set('revlogv1 store fncache'.split()) 22 supported = set('revlogv1 store fncache shared'.split())
23 23
24 def __init__(self, baseui, path=None, create=0): 24 def __init__(self, baseui, path=None, create=0):
25 repo.repository.__init__(self) 25 repo.repository.__init__(self)
26 self.root = os.path.realpath(path) 26 self.root = os.path.realpath(path)
27 self.path = os.path.join(self.root, ".hg") 27 self.path = os.path.join(self.root, ".hg")
70 if inst.errno != errno.ENOENT: 70 if inst.errno != errno.ENOENT:
71 raise 71 raise
72 for r in requirements - self.supported: 72 for r in requirements - self.supported:
73 raise error.RepoError(_("requirement '%s' not supported") % r) 73 raise error.RepoError(_("requirement '%s' not supported") % r)
74 74
75 self.store = store.store(requirements, self.path, util.opener) 75 self.sharedpath = self.path
76 try:
77 s = os.path.realpath(self.opener("sharedpath").read())
78 if not os.path.exists(s):
79 raise error.RepoError(
80 _('.hg/sharedpath points to nonexistent directory %s' % s))
81 self.sharedpath = s
82 except IOError, inst:
83 if inst.errno != errno.ENOENT:
84 raise
85
86 self.store = store.store(requirements, self.sharedpath, util.opener)
76 self.spath = self.store.path 87 self.spath = self.store.path
77 self.sopener = self.store.opener 88 self.sopener = self.store.opener
78 self.sjoin = self.store.join 89 self.sjoin = self.store.join
79 self.opener.createmode = self.store.createmode 90 self.opener.createmode = self.store.createmode
80 91