diff options
-rw-r--r-- | docs/manifest-format.txt | 16 | ||||
-rw-r--r-- | manifest.py | 10 |
2 files changed, 26 insertions, 0 deletions
diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt index 5c014d6d..562e66e2 100644 --- a/docs/manifest-format.txt +++ b/docs/manifest-format.txt | |||
@@ -22,6 +22,7 @@ following DTD: | |||
22 | <!DOCTYPE manifest [ | 22 | <!DOCTYPE manifest [ |
23 | <!ELEMENT manifest (remote*, | 23 | <!ELEMENT manifest (remote*, |
24 | default?, | 24 | default?, |
25 | remove-project*, | ||
25 | project*, | 26 | project*, |
26 | add-remote*)> | 27 | add-remote*)> |
27 | 28 | ||
@@ -47,6 +48,9 @@ following DTD: | |||
47 | <!ATTLIST add-remote fetch CDATA #REQUIRED> | 48 | <!ATTLIST add-remote fetch CDATA #REQUIRED> |
48 | <!ATTLIST add-remote review CDATA #IMPLIED> | 49 | <!ATTLIST add-remote review CDATA #IMPLIED> |
49 | <!ATTLIST add-remote project-name CDATA #IMPLIED> | 50 | <!ATTLIST add-remote project-name CDATA #IMPLIED> |
51 | |||
52 | <!ELEMENT remove-project (EMPTY)> | ||
53 | <!ATTLIST remove-project name CDATA #REQUIRED> | ||
50 | ]> | 54 | ]> |
51 | 55 | ||
52 | A description of the elements and their attributes follows. | 56 | A description of the elements and their attributes follows. |
@@ -155,6 +159,18 @@ the majority of the project's object database to be obtained through | |||
155 | these additional remotes. | 159 | these additional remotes. |
156 | 160 | ||
157 | 161 | ||
162 | Element remove-project | ||
163 | ---------------------- | ||
164 | |||
165 | Deletes the named project from the internal manifest table, possibly | ||
166 | allowing a subsequent project element in the same manifest file to | ||
167 | replace the project with a different source. | ||
168 | |||
169 | This element is mostly useful in the local_manifest.xml, where | ||
170 | the user can remove a project, and possibly replace it with their | ||
171 | own definition. | ||
172 | |||
173 | |||
158 | Local Manifest | 174 | Local Manifest |
159 | ============== | 175 | ============== |
160 | 176 | ||
diff --git a/manifest.py b/manifest.py index 9137371f..32a7e513 100644 --- a/manifest.py +++ b/manifest.py | |||
@@ -138,6 +138,16 @@ class Manifest(object): | |||
138 | self.manifestFile | 138 | self.manifestFile |
139 | 139 | ||
140 | for node in config.childNodes: | 140 | for node in config.childNodes: |
141 | if node.nodeName == 'remove-project': | ||
142 | name = self._reqatt(node, 'name') | ||
143 | try: | ||
144 | del self._projects[name] | ||
145 | except KeyError: | ||
146 | raise ManifestParseError, \ | ||
147 | 'project %s not found' % \ | ||
148 | (name) | ||
149 | |||
150 | for node in config.childNodes: | ||
141 | if node.nodeName == 'remote': | 151 | if node.nodeName == 'remote': |
142 | remote = self._ParseRemote(node) | 152 | remote = self._ParseRemote(node) |
143 | if self._remotes.get(remote.name): | 153 | if self._remotes.get(remote.name): |