mirror of
https://gerrit.googlesource.com/git-repo
synced 2026-01-12 01:20:26 +00:00
manifest: Propagate revision attribute through multiple levels of include
Make sure a revision attribute for an include element is propagated through multiple levels of manifest includes. Change-Id: If37d65b0cd47da673719976598175d0eb6b7cbbe Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/525341 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Commit-Queue: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Reviewed-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
@@ -579,7 +579,9 @@ This also applies to all extend-project elements in the included manifests.
|
|||||||
Same syntax as the corresponding element of `project`.
|
Same syntax as the corresponding element of `project`.
|
||||||
|
|
||||||
Attribute `revision`: Name of a Git branch (e.g. `main` or `refs/heads/main`)
|
Attribute `revision`: Name of a Git branch (e.g. `main` or `refs/heads/main`)
|
||||||
default to which all projects in the included manifest belong.
|
default to which all projects in the included manifest belong. This recurses,
|
||||||
|
meaning it will apply to all projects in all manifests included as a result of
|
||||||
|
this element.
|
||||||
|
|
||||||
## Local Manifests {#local-manifests}
|
## Local Manifests {#local-manifests}
|
||||||
|
|
||||||
|
|||||||
@@ -641,7 +641,9 @@ extend\-project elements in the included manifests. Same syntax as the
|
|||||||
corresponding element of `project`.
|
corresponding element of `project`.
|
||||||
.PP
|
.PP
|
||||||
Attribute `revision`: Name of a Git branch (e.g. `main` or `refs/heads/main`)
|
Attribute `revision`: Name of a Git branch (e.g. `main` or `refs/heads/main`)
|
||||||
default to which all projects in the included manifest belong.
|
default to which all projects in the included manifest belong. This recurses,
|
||||||
|
meaning it will apply to all projects in all manifests included as a result of
|
||||||
|
this element.
|
||||||
.PP
|
.PP
|
||||||
Local Manifests
|
Local Manifests
|
||||||
.PP
|
.PP
|
||||||
|
|||||||
@@ -1305,6 +1305,14 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
|||||||
|
|
||||||
nodes = []
|
nodes = []
|
||||||
for node in manifest.childNodes:
|
for node in manifest.childNodes:
|
||||||
|
if (
|
||||||
|
parent_node
|
||||||
|
and node.nodeName in ("include", "project")
|
||||||
|
and not node.hasAttribute("revision")
|
||||||
|
):
|
||||||
|
node.setAttribute(
|
||||||
|
"revision", parent_node.getAttribute("revision")
|
||||||
|
)
|
||||||
if node.nodeName == "include":
|
if node.nodeName == "include":
|
||||||
name = self._reqatt(node, "name")
|
name = self._reqatt(node, "name")
|
||||||
if restrict_includes:
|
if restrict_includes:
|
||||||
@@ -1349,14 +1357,6 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
|||||||
node.getAttribute("groups")
|
node.getAttribute("groups")
|
||||||
)
|
)
|
||||||
node.setAttribute("groups", ",".join(sorted(nodeGroups)))
|
node.setAttribute("groups", ",".join(sorted(nodeGroups)))
|
||||||
if (
|
|
||||||
parent_node
|
|
||||||
and node.nodeName == "project"
|
|
||||||
and not node.hasAttribute("revision")
|
|
||||||
):
|
|
||||||
node.setAttribute(
|
|
||||||
"revision", parent_node.getAttribute("revision")
|
|
||||||
)
|
|
||||||
nodes.append(node)
|
nodes.append(node)
|
||||||
return nodes
|
return nodes
|
||||||
|
|
||||||
|
|||||||
@@ -422,9 +422,27 @@ class IncludeElementTests(ManifestParseTestCase):
|
|||||||
(self.manifest_dir / "stable.xml").write_text(
|
(self.manifest_dir / "stable.xml").write_text(
|
||||||
"""
|
"""
|
||||||
<manifest>
|
<manifest>
|
||||||
|
<include name="man1.xml" />
|
||||||
|
<include name="man2.xml" revision="stable-branch2" />
|
||||||
<project name="stable-name1" path="stable-path1" />
|
<project name="stable-name1" path="stable-path1" />
|
||||||
<project name="stable-name2" path="stable-path2" revision="stable-branch2" />
|
<project name="stable-name2" path="stable-path2" revision="stable-branch2" />
|
||||||
</manifest>
|
</manifest>
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
(self.manifest_dir / "man1.xml").write_text(
|
||||||
|
"""
|
||||||
|
<manifest>
|
||||||
|
<project name="man1-name1" />
|
||||||
|
<project name="man1-name2" revision="stable-branch3" />
|
||||||
|
</manifest>
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
(self.manifest_dir / "man2.xml").write_text(
|
||||||
|
"""
|
||||||
|
<manifest>
|
||||||
|
<project name="man2-name1" />
|
||||||
|
<project name="man2-name2" revision="stable-branch3" />
|
||||||
|
</manifest>
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
include_m = manifest_xml.XmlManifest(str(self.repodir), str(root_m))
|
include_m = manifest_xml.XmlManifest(str(self.repodir), str(root_m))
|
||||||
@@ -441,6 +459,14 @@ class IncludeElementTests(ManifestParseTestCase):
|
|||||||
if proj.name == "stable-name2":
|
if proj.name == "stable-name2":
|
||||||
# Check stable proj revision can override include node.
|
# Check stable proj revision can override include node.
|
||||||
self.assertEqual("stable-branch2", proj.revisionExpr)
|
self.assertEqual("stable-branch2", proj.revisionExpr)
|
||||||
|
if proj.name == "man1-name1":
|
||||||
|
self.assertEqual("stable-branch", proj.revisionExpr)
|
||||||
|
if proj.name == "man1-name2":
|
||||||
|
self.assertEqual("stable-branch3", proj.revisionExpr)
|
||||||
|
if proj.name == "man2-name1":
|
||||||
|
self.assertEqual("stable-branch2", proj.revisionExpr)
|
||||||
|
if proj.name == "man2-name2":
|
||||||
|
self.assertEqual("stable-branch3", proj.revisionExpr)
|
||||||
|
|
||||||
def test_group_levels(self):
|
def test_group_levels(self):
|
||||||
root_m = self.manifest_dir / "root.xml"
|
root_m = self.manifest_dir / "root.xml"
|
||||||
|
|||||||
Reference in New Issue
Block a user