Механизмы поддержки коллективной работы в Eclipse предоставляют API, позволяющий модулям интегрировать функции управления версиями и настройки управление хранилищем. Функции, предоставляемые хранилищем, влияют в основном на пользовательский поток операций, поскольку они дополняют функции извлечения файлов, сравнения их содержимого с локальным содержимым, обновления их версий и возвращения обновленных файлов в хранилище. API модуля совместной работы должен оставаться достаточно пассивным, чтобы модули типов хранилищ могли определять свои потоки операций, и пользователи, знающие продукт, могли работать с платформой по тому же принципу и поддерживать потоки операций, необходимые для модулей.
Эта задача решается с помощью нескольких приемов:
Модуль типа хранилища позволяет синхронизировать ресурсы рабочей области с удаленным расположением. Как минимум, он дает возможность помещения ресурсов из рабочей области в удаленное расположение и извлечения их из удаленного расположения в рабочую область. Тип хранилища связывается с проектом и управляет ресурсами проекта с помощью IFileModificationValidator и IMoveDeleteHook. С одним проектом можно связать только один тип хранилища. Пользователь может сделать это с помощью мастера IConfigurationWizard. Типы хранилищ могут участвовать в экспорте и импорте проектов в рабочую область. Эту возможность предоставляет комплект рабочего набора группы. Для поддержки этой функции в модуле типа хранилища следует реализовать ProjectSetCapability.
Позволяет другим модулям обозначать особое управление ресурсами, связанными с совместной работой. Модуль типа хранилища может помечать общие ресурсы как частные, таким образом скрывая их от других модулей. Это делается с помощью метода IResource#setTeamPrivateMember и обычно служит для скрытия заданных метафайлов хранилища от пользователя. Кроме того, компоновщики часто помечают вывод компоновки как производный. Это извещает хранилище о том, что ресурс временный, и его можно проигнорировать. Модуль хранилища проверяет этот флаг ресурса с помощью метода IResource#isDerived.
При этом другие модули могут добавлять дополнительные подсказки для модуля хранилища. Информация о типах файлов добавляется с помощью расширения org.eclipse.team.core.fileTypes, а информация об общих файлах, которые можно проигнорировать, с помощью точки расширения org.eclipse.team.core.ignore.
Механизмы поддержки синхронизации предоставляют классы и интерфейсы для управления динамическим сбором сведений о синхронизации (SyncInfo, SyncInfoSet). С помощью этих функций можно управлять информацией о вариантах ресурсов в рабочей области. Например, с помощью FTP можно сохранить системное время самого свежего удаленного файла и базу для текущего загруженного ресурса. Поддержка синхронизации предоставляет API для управления и сохранения вариантов ресурсов, а также отображения состояния синхронизации для пользователя.
Поддержка UI также структурирована пассивно. В модуле UI коллективной работы определены заменители для действий типа хранилища, параметров и свойств, но сами эти элементы UI следует определять в модуле поддержки коллективной работы. В модуле UI коллективной работы также предусмотрен простой, расширяемый мастер настройки, позволяющий связывать проекты с хранилищами. Модули могут передавать этому мастеру содержимое, позволяющее указывать конкретные сведения о хранилище.
Несколько типов хранилищ в платформе могут сосуществовать мирно. Фактически, можно даже реализовать для одного хранилища нескольких клиентов. Например, один будет устанавливать клиент CVS, предназначенный для экспертов, а второй - для новичков.