Mercurial > public > mercurial-scm > hg-stable
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 |