mercurial/subrepo.py
changeset 24673 105758d1b37b
parent 24672 dd0b86f740ef
child 24674 93b0e0db7929
equal deleted inserted replaced
24672:dd0b86f740ef 24673:105758d1b37b
   278         parent = parent._subparent
   278         parent = parent._subparent
   279     return repo.root[len(pathutil.normasprefix(parent.root)):]
   279     return repo.root[len(pathutil.normasprefix(parent.root)):]
   280 
   280 
   281 def subrelpath(sub):
   281 def subrelpath(sub):
   282     """return path to this subrepo as seen from outermost repo"""
   282     """return path to this subrepo as seen from outermost repo"""
   283     if util.safehasattr(sub, '_relpath'):
   283     return sub._relpath
   284         return sub._relpath
       
   285     if not util.safehasattr(sub, '_repo'):
       
   286         return sub._path
       
   287     return reporelpath(sub._repo)
       
   288 
   284 
   289 def _abssource(repo, push=False, abort=True):
   285 def _abssource(repo, push=False, abort=True):
   290     """return pull/push path of repo - either based on parent repo .hgsub info
   286     """return pull/push path of repo - either based on parent repo .hgsub info
   291     or on the top repo config. Abort or return None if no source found."""
   287     or on the top repo config. Abort or return None if no source found."""
   292     if util.safehasattr(repo, '_subparent'):
   288     if util.safehasattr(repo, '_subparent'):
   555     @propertycache
   551     @propertycache
   556     def wvfs(self):
   552     def wvfs(self):
   557         """return vfs to access the working directory of this subrepository
   553         """return vfs to access the working directory of this subrepository
   558         """
   554         """
   559         return scmutil.vfs(self._ctx.repo().wvfs.join(self._path))
   555         return scmutil.vfs(self._ctx.repo().wvfs.join(self._path))
       
   556 
       
   557     @propertycache
       
   558     def _relpath(self):
       
   559         """return path to this subrepository as seen from outermost repository
       
   560         """
       
   561         return self.wvfs.reljoin(reporelpath(self._ctx.repo()), self._path)
   560 
   562 
   561 class hgsubrepo(abstractsubrepo):
   563 class hgsubrepo(abstractsubrepo):
   562     def __init__(self, ctx, path, state):
   564     def __init__(self, ctx, path, state):
   563         super(hgsubrepo, self).__init__(ctx, path)
   565         super(hgsubrepo, self).__init__(ctx, path)
   564         self._state = state
   566         self._state = state
  1186 
  1188 
  1187 class gitsubrepo(abstractsubrepo):
  1189 class gitsubrepo(abstractsubrepo):
  1188     def __init__(self, ctx, path, state):
  1190     def __init__(self, ctx, path, state):
  1189         super(gitsubrepo, self).__init__(ctx, path)
  1191         super(gitsubrepo, self).__init__(ctx, path)
  1190         self._state = state
  1192         self._state = state
  1191         self._relpath = os.path.join(reporelpath(ctx.repo()), path)
       
  1192         self._abspath = ctx.repo().wjoin(path)
  1193         self._abspath = ctx.repo().wjoin(path)
  1193         self._subparent = ctx.repo()
  1194         self._subparent = ctx.repo()
  1194         self._ensuregit()
  1195         self._ensuregit()
  1195 
  1196 
  1196     def _ensuregit(self):
  1197     def _ensuregit(self):