summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2016-04-06 16:03:54 -0700
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2016-04-22 10:32:06 +0900
commit96c2d654897ffe82d7df9f1dd2295cda5809be73 (patch)
tree50f12eb584bb4ea64e4c43757ace386678c1f9c9
parentcee5c771664833e517f47c0a33e520fd967cbe57 (diff)
downloadgit-repo-96c2d654897ffe82d7df9f1dd2295cda5809be73.tar.gz
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
-rw-r--r--manifest_xml.py13
-rw-r--r--project.py4
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):
102 remoteName = self.name 102 remoteName = self.name
103 if self.remoteAlias: 103 if self.remoteAlias:
104 remoteName = self.remoteAlias 104 remoteName = self.remoteAlias
105 return RemoteSpec(remoteName, url, self.reviewUrl) 105 return RemoteSpec(remoteName,
106 url=url,
107 review=self.reviewUrl,
108 orig_name=self.name)
106 109
107class XmlManifest(object): 110class XmlManifest(object):
108 """manages the repo configuration file""" 111 """manages the repo configuration file"""
@@ -249,9 +252,9 @@ class XmlManifest(object):
249 e.setAttribute('path', relpath) 252 e.setAttribute('path', relpath)
250 remoteName = None 253 remoteName = None
251 if d.remote: 254 if d.remote:
252 remoteName = d.remote.remoteAlias or d.remote.name 255 remoteName = d.remote.name
253 if not d.remote or p.remote.name != remoteName: 256 if not d.remote or p.remote.orig_name != remoteName:
254 remoteName = p.remote.name 257 remoteName = p.remote.orig_name
255 e.setAttribute('remote', remoteName) 258 e.setAttribute('remote', remoteName)
256 if peg_rev: 259 if peg_rev:
257 if self.IsMirror: 260 if self.IsMirror:
@@ -267,7 +270,7 @@ class XmlManifest(object):
267 # isn't our value 270 # isn't our value
268 e.setAttribute('upstream', p.revisionExpr) 271 e.setAttribute('upstream', p.revisionExpr)
269 else: 272 else:
270 revision = self.remotes[remoteName].revision or d.revisionExpr 273 revision = self.remotes[p.remote.orig_name].revision or d.revisionExpr
271 if not revision or revision != p.revisionExpr: 274 if not revision or revision != p.revisionExpr:
272 e.setAttribute('revision', p.revisionExpr) 275 e.setAttribute('revision', p.revisionExpr)
273 if p.upstream and p.upstream != p.revisionExpr: 276 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):
315 name, 315 name,
316 url=None, 316 url=None,
317 review=None, 317 review=None,
318 revision=None): 318 revision=None,
319 orig_name=None):
319 self.name = name 320 self.name = name
320 self.url = url 321 self.url = url
321 self.review = review 322 self.review = review
322 self.revision = revision 323 self.revision = revision
324 self.orig_name = orig_name
323 325
324 326
325class RepoHook(object): 327class RepoHook(object):