From 96c2d654897ffe82d7df9f1dd2295cda5809be73 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Wed, 6 Apr 2016 16:03:54 -0700 Subject: [PATCH] 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 --- manifest_xml.py | 13 ++++++++----- project.py | 4 +++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index 3ac607ec..bc4d8c40 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -102,7 +102,10 @@ class _XmlRemote(object): remoteName = self.name if 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): """manages the repo configuration file""" @@ -249,9 +252,9 @@ class XmlManifest(object): e.setAttribute('path', relpath) remoteName = None if d.remote: - remoteName = d.remote.remoteAlias or d.remote.name - if not d.remote or p.remote.name != remoteName: - remoteName = p.remote.name + remoteName = d.remote.name + if not d.remote or p.remote.orig_name != remoteName: + remoteName = p.remote.orig_name e.setAttribute('remote', remoteName) if peg_rev: if self.IsMirror: @@ -267,7 +270,7 @@ class XmlManifest(object): # isn't our value e.setAttribute('upstream', p.revisionExpr) 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: e.setAttribute('revision', p.revisionExpr) if p.upstream and p.upstream != p.revisionExpr: diff --git a/project.py b/project.py index e0bd9c10..8213e431 100644 --- a/project.py +++ b/project.py @@ -315,11 +315,13 @@ class RemoteSpec(object): name, url=None, review=None, - revision=None): + revision=None, + orig_name=None): self.name = name self.url = url self.review = review self.revision = revision + self.orig_name = orig_name class RepoHook(object):