Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: for the plan.

Jump to: navigation, search

Architectural and Design Notes

Good Citizenship in Eclipse

Programming for Source and Version Control Management Systems

Eclipse supports many Source or Version Control Management (SCM or VCM) repositories.

Some of these have special needs, and special interfaces to interact with, in order for Eclipse projects to be "good citizens" in this community of repository providers.

One easy thing that sometimes applies, is to use IResource.setDerived(true) for resources which should not be version controlled (such as, because they are frequently changing, and derived from other resources).

A harder thing, sometimes, to program for, is to anticipate ahead of time if a resource is about to be changed. In these cases, some VCM providers want to do something "special" before a file on local system is modified. For example, it may want to "check it out" of the repository library "for exclusive use" when edited ... and if this is not done, the edit will sometimes fail, or be at risk of being "stale" if someone else modifies the same shared resource.

This includes the sometimes forgotten .project files and other system files that are shared, as well as the normal resource files. Luckily, there's a handy API so Eclipse plugin providers do not have to do too much: IWorkSpace.validateEdit. See also bug 160905.

Lastly, there are some "example test environments" that help test some of these issues -- without having to setup some whole particular repository systems. It is not perfectly accurate for all repository systems, but from what I've heard, it is "close enough" that if things work correctly with the "pessimistic file system" then you can assume they'll work correctly with the real thing.

Copyright © Eclipse Foundation, Inc. All Rights Reserved.