These PSFs generated by using Export...->Team->Team Project Set from a workspace with all projects in all relevant Working Sets open.

Export one/all QVTd working sets to refresh the relevant PSF file.

Then manually anonymize by editing the GIT credentials from e.g. ssh://ewillink@git.eclipse.org:29418/ocl to http://git.eclipse.org/gitroot/ocl
and replacing the CVS accesses to pserver:lpg by to pserver:anonymous@lpg

This folder contains PSF files that may assist MDT/OCL developers.

The main user-friendly PSF referenced from the MDT/OCL project page
(http://www.eclipse.org/projects/project_summary.php?projectid=modeling.mdt.ocl)
is http://eclipse.org/modeling/mdt/ocl/resources/ocl.psf which is maintained at
/cvsroot/org.eclipse www/modeling/mdt/ocl/resources/ocl.psf.

Here you will find

ocl-all.psf
------------

All the other PSFs at once.

ocl-classic.psf
---------------

The Ecore and UML binding support together with their tests.

ocl-examples.psf
----------------

The User Interface for Ecore and UML binding support together with its tests.

ocl-ia.psf
----------

The Impact Analyzer for Ecore and UML binding support together with its tests.

ocl-pivot.psf
-------------

The Pivot binding support (editors, code generator) together with its tests.

ocl-releng.psf
------------

that loads features needed to develop/build/run parser features

ocl-tools.psf
----------------

that loads plugins needed to develop/build/run parser features

- lpg.runtime.java
- lpg.generator
- lpg.generator.linux_x86
- lpg.generator.linux_x86_64
- lpg.generator.macosx_x86
- lpg.generator.macosx_x86_64
- lpg.generator.win32_x86

test-tools.psf (Obsolete)
--------------

that loads plugins needed to develop/build/run test features
- org.eclipse.test
- org.eclipse.ant.optional.junit
- org.eclipse.uml2.uml.resources

www.psf (Obsolete)
-------

that loads the doc and web support projects
- org.eclipse.ocl.doc
- org.eclipse.ocl.www
