Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/subrepo.py @ 10666:4c50a90b90fc stable
subrepo: keep ui and hgrc in sync when creating new repo
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Fri, 12 Mar 2010 01:23:35 +0100 |
parents | 664bb0ce95ed |
children | 97022cef0a20 c90d923fff64 |
comparison
equal
deleted
inserted
replaced
10665:664bb0ce95ed | 10666:4c50a90b90fc |
---|---|
175 def __init__(self, ctx, path, state): | 175 def __init__(self, ctx, path, state): |
176 self._path = path | 176 self._path = path |
177 self._state = state | 177 self._state = state |
178 r = ctx._repo | 178 r = ctx._repo |
179 root = r.wjoin(path) | 179 root = r.wjoin(path) |
180 if os.path.exists(os.path.join(root, '.hg')): | 180 create = False |
181 self._repo = hg.repository(r.ui, root) | 181 if not os.path.exists(os.path.join(root, '.hg')): |
182 else: | 182 create = True |
183 util.makedirs(root) | 183 util.makedirs(root) |
184 self._repo = hg.repository(r.ui, root, create=True) | 184 self._repo = hg.repository(r.ui, root, create=create) |
185 f = file(os.path.join(root, '.hg', 'hgrc'), 'w') | |
186 f.write('[paths]\ndefault = %s\n' % os.path.join( | |
187 _abssource(ctx._repo), path)) | |
188 f.close() | |
189 self._repo._subparent = r | 185 self._repo._subparent = r |
190 self._repo._subsource = state[0] | 186 self._repo._subsource = state[0] |
187 | |
188 if create: | |
189 fp = self._repo.opener("hgrc", "w", text=True) | |
190 fp.write('[paths]\n') | |
191 | |
192 def addpathconfig(key, value): | |
193 fp.write('%s = %s\n' % (key, value)) | |
194 self._repo.ui.setconfig('paths', key, value) | |
195 | |
196 defpath = os.path.join(_abssource(ctx._repo), path) | |
197 addpathconfig('default', defpath) | |
198 fp.close() | |
191 | 199 |
192 def dirty(self): | 200 def dirty(self): |
193 r = self._state[1] | 201 r = self._state[1] |
194 if r == '': | 202 if r == '': |
195 return True | 203 return True |
196 w = self._repo[None] | 204 w = self._repo[None] |
197 if w.p1() != self._repo[r]: # version checked out changed | 205 if w.p1() != self._repo[r]: # version checked out change |
198 return True | 206 return True |
199 return w.dirty() # working directory changed | 207 return w.dirty() # working directory changed |
200 | 208 |
201 def commit(self, text, user, date): | 209 def commit(self, text, user, date): |
202 self._repo.ui.debug("committing subrepo %s\n" % self._path) | 210 self._repo.ui.debug("committing subrepo %s\n" % self._path) |