Mercurial > public > mercurial-scm > hg
comparison mercurial/subrepo.py @ 9092:9aebeea7ac00
subrepo: use hg.repository instead of creating localrepo directly
this way, extensions' reposetup will be called, which allows for git
subrepos to be handled by hg-git (and I believe the same goes for
svn and hgsubversion)
author | Abderrahim Kitouni <a.kitouni@gmail.com> |
---|---|
date | Sat, 04 Jul 2009 14:18:15 +0100 |
parents | 38b5d5e0efab |
children | 3f650f6aa130 |
comparison
equal
deleted
inserted
replaced
9091:79a886bcf461 | 9092:9aebeea7ac00 |
---|---|
6 # GNU General Public License version 2, incorporated herein by reference. | 6 # GNU General Public License version 2, incorporated herein by reference. |
7 | 7 |
8 import errno, os | 8 import errno, os |
9 from i18n import _ | 9 from i18n import _ |
10 import config, util, node, error | 10 import config, util, node, error |
11 localrepo = hg = None | 11 hg = None |
12 | 12 |
13 nullstate = ('', '') | 13 nullstate = ('', '') |
14 | 14 |
15 def state(ctx): | 15 def state(ctx): |
16 p = config.config() | 16 p = config.config() |
115 def subrepo(ctx, path): | 115 def subrepo(ctx, path): |
116 # subrepo inherently violates our import layering rules | 116 # subrepo inherently violates our import layering rules |
117 # because it wants to make repo objects from deep inside the stack | 117 # because it wants to make repo objects from deep inside the stack |
118 # so we manually delay the circular imports to not break | 118 # so we manually delay the circular imports to not break |
119 # scripts that don't use our demand-loading | 119 # scripts that don't use our demand-loading |
120 global localrepo, hg | 120 global hg |
121 import localrepo as l, hg as h | 121 import hg as h |
122 localrepo = l | |
123 hg = h | 122 hg = h |
124 | 123 |
125 util.path_auditor(ctx._repo.root)(path) | 124 util.path_auditor(ctx._repo.root)(path) |
126 state = ctx.substate.get(path, nullstate) | 125 state = ctx.substate.get(path, nullstate) |
127 if state[0].startswith('['): # future expansion | 126 if state[0].startswith('['): # future expansion |
133 self._path = path | 132 self._path = path |
134 self._state = state | 133 self._state = state |
135 r = ctx._repo | 134 r = ctx._repo |
136 root = r.wjoin(path) | 135 root = r.wjoin(path) |
137 if os.path.exists(os.path.join(root, '.hg')): | 136 if os.path.exists(os.path.join(root, '.hg')): |
138 self._repo = localrepo.localrepository(r.ui, root) | 137 self._repo = hg.repository(r.ui, root) |
139 else: | 138 else: |
140 util.makedirs(root) | 139 util.makedirs(root) |
141 self._repo = localrepo.localrepository(r.ui, root, create=True) | 140 self._repo = hg.repository(r.ui, root, create=True) |
142 self._repo._subparent = r | 141 self._repo._subparent = r |
143 self._repo._subsource = state[0] | 142 self._repo._subsource = state[0] |
144 | 143 |
145 def dirty(self): | 144 def dirty(self): |
146 r = self._state[1] | 145 r = self._state[1] |