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: @@ -47,6 +48,9 @@ following DTD: + + + ]> 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 these additional remotes. +Element remove-project +---------------------- + +Deletes the named project from the internal manifest table, possibly +allowing a subsequent project element in the same manifest file to +replace the project with a different source. + +This element is mostly useful in the local_manifest.xml, where +the user can remove a project, and possibly replace it with their +own definition. + + Local Manifest ============== diff --git a/manifest.py b/manifest.py index 9137371f..32a7e513 100644 --- a/manifest.py +++ b/manifest.py @@ -137,6 +137,16 @@ class Manifest(object): "no in %s" % \ self.manifestFile + for node in config.childNodes: + if node.nodeName == 'remove-project': + name = self._reqatt(node, 'name') + try: + del self._projects[name] + except KeyError: + raise ManifestParseError, \ + 'project %s not found' % \ + (name) + for node in config.childNodes: if node.nodeName == 'remote': remote = self._ParseRemote(node)