diff options
Diffstat (limited to 'manifest_xml.py')
| -rw-r--r-- | manifest_xml.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/manifest_xml.py b/manifest_xml.py index 46976538..5c5617ac 100644 --- a/manifest_xml.py +++ b/manifest_xml.py | |||
| @@ -18,8 +18,7 @@ import sys | |||
| 18 | import xml.dom.minidom | 18 | import xml.dom.minidom |
| 19 | 19 | ||
| 20 | from git_config import GitConfig, IsId | 20 | from git_config import GitConfig, IsId |
| 21 | from project import Project, MetaProject, R_HEADS, HEAD | 21 | from project import RemoteSpec, Project, MetaProject, R_HEADS, HEAD |
| 22 | from remote import Remote | ||
| 23 | from error import ManifestParseError | 22 | from error import ManifestParseError |
| 24 | 23 | ||
| 25 | MANIFEST_FILE_NAME = 'manifest.xml' | 24 | MANIFEST_FILE_NAME = 'manifest.xml' |
| @@ -31,6 +30,21 @@ class _Default(object): | |||
| 31 | revision = None | 30 | revision = None |
| 32 | remote = None | 31 | remote = None |
| 33 | 32 | ||
| 33 | class _XmlRemote(object): | ||
| 34 | def __init__(self, | ||
| 35 | name, | ||
| 36 | fetch=None, | ||
| 37 | review=None): | ||
| 38 | self.name = name | ||
| 39 | self.fetchUrl = fetch | ||
| 40 | self.reviewUrl = review | ||
| 41 | |||
| 42 | def ToRemoteSpec(self, projectName): | ||
| 43 | url = self.fetchUrl | ||
| 44 | while url.endswith('/'): | ||
| 45 | url = url[:-1] | ||
| 46 | url += '/%s.git' % projectName | ||
| 47 | return RemoteSpec(self.name, url, self.reviewUrl) | ||
| 34 | 48 | ||
| 35 | class XmlManifest(object): | 49 | class XmlManifest(object): |
| 36 | """manages the repo configuration file""" | 50 | """manages the repo configuration file""" |
| @@ -257,7 +271,7 @@ class XmlManifest(object): | |||
| 257 | 271 | ||
| 258 | if name is None: | 272 | if name is None: |
| 259 | s = m_url.rindex('/') + 1 | 273 | s = m_url.rindex('/') + 1 |
| 260 | remote = Remote('origin', fetch = m_url[:s]) | 274 | remote = _XmlRemote('origin', m_url[:s]) |
| 261 | name = m_url[s:] | 275 | name = m_url[s:] |
| 262 | 276 | ||
| 263 | if name.endswith('.git'): | 277 | if name.endswith('.git'): |
| @@ -268,7 +282,7 @@ class XmlManifest(object): | |||
| 268 | gitdir = os.path.join(self.topdir, '%s.git' % name) | 282 | gitdir = os.path.join(self.topdir, '%s.git' % name) |
| 269 | project = Project(manifest = self, | 283 | project = Project(manifest = self, |
| 270 | name = name, | 284 | name = name, |
| 271 | remote = remote, | 285 | remote = remote.ToRemoteSpec(name), |
| 272 | gitdir = gitdir, | 286 | gitdir = gitdir, |
| 273 | worktree = None, | 287 | worktree = None, |
| 274 | relpath = None, | 288 | relpath = None, |
| @@ -284,7 +298,7 @@ class XmlManifest(object): | |||
| 284 | review = node.getAttribute('review') | 298 | review = node.getAttribute('review') |
| 285 | if review == '': | 299 | if review == '': |
| 286 | review = None | 300 | review = None |
| 287 | return Remote(name=name, fetch=fetch, review=review) | 301 | return _XmlRemote(name, fetch, review) |
| 288 | 302 | ||
| 289 | def _ParseDefault(self, node): | 303 | def _ParseDefault(self, node): |
| 290 | """ | 304 | """ |
| @@ -337,7 +351,7 @@ class XmlManifest(object): | |||
| 337 | 351 | ||
| 338 | project = Project(manifest = self, | 352 | project = Project(manifest = self, |
| 339 | name = name, | 353 | name = name, |
| 340 | remote = remote, | 354 | remote = remote.ToRemoteSpec(name), |
| 341 | gitdir = gitdir, | 355 | gitdir = gitdir, |
| 342 | worktree = worktree, | 356 | worktree = worktree, |
| 343 | relpath = path, | 357 | relpath = path, |
