summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/manifest-format.txt13
-rw-r--r--manifest.py9
-rw-r--r--project.py4
-rw-r--r--remote.py6
4 files changed, 26 insertions, 6 deletions
diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt
index 409524bb..2b49d466 100644
--- a/docs/manifest-format.txt
+++ b/docs/manifest-format.txt
@@ -23,9 +23,10 @@ following DTD:
23 <!ELEMENT manifest (remote*, default?, project*)> 23 <!ELEMENT manifest (remote*, default?, project*)>
24 24
25 <!ELEMENT remote (EMPTY)> 25 <!ELEMENT remote (EMPTY)>
26 <!ATTLIST remote name ID #REQUIRED> 26 <!ATTLIST remote name ID #REQUIRED>
27 <!ATTLIST remote fetch CDATA #REQUIRED> 27 <!ATTLIST remote fetch CDATA #REQUIRED>
28 <!ATTLIST remote review CDATA #IMPLIED> 28 <!ATTLIST remote review CDATA #IMPLIED>
29 <!ATTLIST remote project-name CDATA #IMPLIED>
29 30
30 <!ELEMENT default (EMPTY)> 31 <!ELEMENT default (EMPTY)>
31 <!ATTLIST default remote IDREF #IMPLIED> 32 <!ATTLIST default remote IDREF #IMPLIED>
@@ -67,6 +68,12 @@ Attribute `review`: Hostname of the Gerrit server where reviews
67are uploaded to by `repo upload`. This attribute is optional; 68are uploaded to by `repo upload`. This attribute is optional;
68if not specified then `repo upload` will not function. 69if not specified then `repo upload` will not function.
69 70
71Attribute `project-name`: Specifies the name of this project used
72by the review server given in the review attribute of this element.
73Only permitted when the remote element is nested inside of a project
74element (see below). If not given, defaults to the name supplied
75in the project's name attribute.
76
70 77
71Element default 78Element default
72--------------- 79---------------
diff --git a/manifest.py b/manifest.py
index ea68b682..65455687 100644
--- a/manifest.py
+++ b/manifest.py
@@ -206,10 +206,17 @@ class Manifest(object):
206 name = self._reqatt(node, 'name') 206 name = self._reqatt(node, 'name')
207 fetch = self._reqatt(node, 'fetch') 207 fetch = self._reqatt(node, 'fetch')
208 review = node.getAttribute('review') 208 review = node.getAttribute('review')
209 if review == '':
210 review = None
211
212 projectName = node.getAttribute('project-name')
213 if projectName == '':
214 projectName = None
209 215
210 r = Remote(name=name, 216 r = Remote(name=name,
211 fetch=fetch, 217 fetch=fetch,
212 review=review) 218 review=review,
219 projectName=projectName)
213 220
214 for n in node.childNodes: 221 for n in node.childNodes:
215 if n.nodeName == 'require': 222 if n.nodeName == 'require':
diff --git a/project.py b/project.py
index 2a4adf73..9509cb98 100644
--- a/project.py
+++ b/project.py
@@ -904,7 +904,9 @@ class Project(object):
904 remote = self.GetRemote(r.name) 904 remote = self.GetRemote(r.name)
905 remote.url = r.fetchUrl 905 remote.url = r.fetchUrl
906 remote.review = r.reviewUrl 906 remote.review = r.reviewUrl
907 if remote.projectname is None: 907 if r.projectName:
908 remote.projectname = r.projectName
909 elif remote.projectname is None:
908 remote.projectname = self.name 910 remote.projectname = self.name
909 remote.ResetFetch() 911 remote.ResetFetch()
910 remote.Save() 912 remote.Save()
diff --git a/remote.py b/remote.py
index 27a8f7a7..3bc30a59 100644
--- a/remote.py
+++ b/remote.py
@@ -14,8 +14,12 @@
14# limitations under the License. 14# limitations under the License.
15 15
16class Remote(object): 16class Remote(object):
17 def __init__(self, name, fetch=None, review=None): 17 def __init__(self, name,
18 fetch=None,
19 review=None,
20 projectName=None):
18 self.name = name 21 self.name = name
19 self.fetchUrl = fetch 22 self.fetchUrl = fetch
20 self.reviewUrl = review 23 self.reviewUrl = review
24 self.projectName = projectName
21 self.requiredCommits = [] 25 self.requiredCommits = []