Jump to: navigation, search

Architectural and Design Notes

Revision as of 03:21, 29 March 2006 by David williams (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.

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.