Просмотр исходного кода

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
Dan Willemsen 9 лет назад
Родитель
Сommit
96c2d65489
2 измененных файлов с 11 добавлено и 6 удалено
  1. 8 5
      manifest_xml.py
  2. 3 1
      project.py

+ 8 - 5
manifest_xml.py

@@ -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
-      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)
         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:

+ 3 - 1
project.py

@@ -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):