summaryrefslogtreecommitdiffstats
path: root/manifest_xml.py
diff options
context:
space:
mode:
Diffstat (limited to 'manifest_xml.py')
-rw-r--r--manifest_xml.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index 9603906f..14b03a30 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -1233,7 +1233,12 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
1233 ) 1233 )
1234 1234
1235 def _ParseManifestXml( 1235 def _ParseManifestXml(
1236 self, path, include_root, parent_groups="", restrict_includes=True 1236 self,
1237 path,
1238 include_root,
1239 parent_groups="",
1240 restrict_includes=True,
1241 parent_node=None,
1237 ): 1242 ):
1238 """Parse a manifest XML and return the computed nodes. 1243 """Parse a manifest XML and return the computed nodes.
1239 1244
@@ -1243,6 +1248,8 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
1243 parent_groups: The groups to apply to this projects. 1248 parent_groups: The groups to apply to this projects.
1244 restrict_includes: Whether to constrain the "name" attribute of 1249 restrict_includes: Whether to constrain the "name" attribute of
1245 includes. 1250 includes.
1251 parent_node: The parent include node, to apply attribute to this
1252 projects.
1246 1253
1247 Returns: 1254 Returns:
1248 List of XML nodes. 1255 List of XML nodes.
@@ -1288,7 +1295,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
1288 ) 1295 )
1289 try: 1296 try:
1290 nodes.extend( 1297 nodes.extend(
1291 self._ParseManifestXml(fp, include_root, include_groups) 1298 self._ParseManifestXml(
1299 fp, include_root, include_groups, parent_node=node
1300 )
1292 ) 1301 )
1293 # should isolate this to the exact exception, but that's 1302 # should isolate this to the exact exception, but that's
1294 # tricky. actual parsing implementation may vary. 1303 # tricky. actual parsing implementation may vary.
@@ -1311,6 +1320,14 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
1311 node.getAttribute("groups") + "," + nodeGroups 1320 node.getAttribute("groups") + "," + nodeGroups
1312 ) 1321 )
1313 node.setAttribute("groups", nodeGroups) 1322 node.setAttribute("groups", nodeGroups)
1323 if (
1324 parent_node
1325 and node.nodeName == "project"
1326 and not node.hasAttribute("revision")
1327 ):
1328 node.setAttribute(
1329 "revision", parent_node.getAttribute("revision")
1330 )
1314 nodes.append(node) 1331 nodes.append(node)
1315 return nodes 1332 return nodes
1316 1333