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, |