Fix XmlManifest.Save with remotes that have 'alias' set

When the alias attribute is set for a remote, the RemoteSpec attached to
a Project only contains the alias name used by git, not the original
name used in the manifest. But that's not enough information to
reconstruct the manifest, so save off the original manifest name as
another RemoteSpec parameter, only used to write the manifest out.

Bug: Issue 181
Bug: Issue 219
Change-Id: Id7417dfd6ce5572e4e5fe14f22924fdf088ca4f3
This commit is contained in:
Dan Willemsen 2016-04-06 16:03:54 -07:00 committed by David Pursehouse
parent cee5c77166
commit 96c2d65489
2 changed files with 11 additions and 6 deletions

View File

@ -102,7 +102,10 @@ class _XmlRemote(object):
remoteName = self.name remoteName = self.name
if self.remoteAlias: if self.remoteAlias:
remoteName = self.remoteAlias remoteName = self.remoteAlias
return RemoteSpec(remoteName, url, self.reviewUrl) return RemoteSpec(remoteName,
url=url,
review=self.reviewUrl,
orig_name=self.name)
class XmlManifest(object): class XmlManifest(object):
"""manages the repo configuration file""" """manages the repo configuration file"""
@ -249,9 +252,9 @@ class XmlManifest(object):
e.setAttribute('path', relpath) e.setAttribute('path', relpath)
remoteName = None remoteName = None
if d.remote: if d.remote:
remoteName = d.remote.remoteAlias or d.remote.name remoteName = d.remote.name
if not d.remote or p.remote.name != remoteName: if not d.remote or p.remote.orig_name != remoteName:
remoteName = p.remote.name remoteName = p.remote.orig_name
e.setAttribute('remote', remoteName) e.setAttribute('remote', remoteName)
if peg_rev: if peg_rev:
if self.IsMirror: if self.IsMirror:
@ -267,7 +270,7 @@ class XmlManifest(object):
# isn't our value # isn't our value
e.setAttribute('upstream', p.revisionExpr) e.setAttribute('upstream', p.revisionExpr)
else: else:
revision = self.remotes[remoteName].revision or d.revisionExpr revision = self.remotes[p.remote.orig_name].revision or d.revisionExpr
if not revision or revision != p.revisionExpr: if not revision or revision != p.revisionExpr:
e.setAttribute('revision', p.revisionExpr) e.setAttribute('revision', p.revisionExpr)
if p.upstream and p.upstream != p.revisionExpr: if p.upstream and p.upstream != p.revisionExpr:

View File

@ -315,11 +315,13 @@ class RemoteSpec(object):
name, name,
url=None, url=None,
review=None, review=None,
revision=None): revision=None,
orig_name=None):
self.name = name self.name = name
self.url = url self.url = url
self.review = review self.review = review
self.revision = revision self.revision = revision
self.orig_name = orig_name
class RepoHook(object): class RepoHook(object):