Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/subrepo.py @ 14963:c035f1c53e39
subrepo: use safehasattr instead of hasattr
Some of these instances could be rewritten as clever getattr(x, y,
default) ladders, but that felt like it impeded readability too much
to be worth the modest efficiency gain.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Mon, 25 Jul 2011 15:53:22 -0500 |
parents | 95ced9f5bf29 |
children | f6a737357195 |
comparison
equal
deleted
inserted
replaced
14962:1c917bc66ccc | 14963:c035f1c53e39 |
---|---|
179 return ui.promptchoice(msg, (_('&Local'), _('&Remote')), 0) | 179 return ui.promptchoice(msg, (_('&Local'), _('&Remote')), 0) |
180 | 180 |
181 def reporelpath(repo): | 181 def reporelpath(repo): |
182 """return path to this (sub)repo as seen from outermost repo""" | 182 """return path to this (sub)repo as seen from outermost repo""" |
183 parent = repo | 183 parent = repo |
184 while hasattr(parent, '_subparent'): | 184 while util.safehasattr(parent, '_subparent'): |
185 parent = parent._subparent | 185 parent = parent._subparent |
186 return repo.root[len(parent.root)+1:] | 186 return repo.root[len(parent.root)+1:] |
187 | 187 |
188 def subrelpath(sub): | 188 def subrelpath(sub): |
189 """return path to this subrepo as seen from outermost repo""" | 189 """return path to this subrepo as seen from outermost repo""" |
190 if hasattr(sub, '_relpath'): | 190 if util.safehasattr(sub, '_relpath'): |
191 return sub._relpath | 191 return sub._relpath |
192 if not hasattr(sub, '_repo'): | 192 if not util.safehasattr(sub, '_repo'): |
193 return sub._path | 193 return sub._path |
194 return reporelpath(sub._repo) | 194 return reporelpath(sub._repo) |
195 | 195 |
196 def _abssource(repo, push=False, abort=True): | 196 def _abssource(repo, push=False, abort=True): |
197 """return pull/push path of repo - either based on parent repo .hgsub info | 197 """return pull/push path of repo - either based on parent repo .hgsub info |
198 or on the top repo config. Abort or return None if no source found.""" | 198 or on the top repo config. Abort or return None if no source found.""" |
199 if hasattr(repo, '_subparent'): | 199 if util.safehasattr(repo, '_subparent'): |
200 source = util.url(repo._subsource) | 200 source = util.url(repo._subsource) |
201 if source.isabs(): | 201 if source.isabs(): |
202 return str(source) | 202 return str(source) |
203 source.path = posixpath.normpath(source.path) | 203 source.path = posixpath.normpath(source.path) |
204 parent = _abssource(repo._subparent, push, abort=False) | 204 parent = _abssource(repo._subparent, push, abort=False) |
206 parent = util.url(parent) | 206 parent = util.url(parent) |
207 parent.path = posixpath.join(parent.path, source.path) | 207 parent.path = posixpath.join(parent.path, source.path) |
208 parent.path = posixpath.normpath(parent.path) | 208 parent.path = posixpath.normpath(parent.path) |
209 return str(parent) | 209 return str(parent) |
210 else: # recursion reached top repo | 210 else: # recursion reached top repo |
211 if hasattr(repo, '_subtoppath'): | 211 if util.safehasattr(repo, '_subtoppath'): |
212 return repo._subtoppath | 212 return repo._subtoppath |
213 if push and repo.ui.config('paths', 'default-push'): | 213 if push and repo.ui.config('paths', 'default-push'): |
214 return repo.ui.config('paths', 'default-push') | 214 return repo.ui.config('paths', 'default-push') |
215 if repo.ui.config('paths', 'default'): | 215 if repo.ui.config('paths', 'default'): |
216 return repo.ui.config('paths', 'default') | 216 return repo.ui.config('paths', 'default') |