Введение
Система контроля версий Code Co-op — это система контроля версий, разработанная компанией Reliable Software.
Code Co op is the peer to peer revision control system made by Reliable Software.
Отличительные черты
Code Co-op — это распределённая система контроля версий реплицированного типа. Она использует одноранговую (peer-to-peer) архитектуру для обмена проектами между разработчиками и контроля изменений в файлах. Вместо использования централизованного репозитория, она реплицирует свою собственную базу данных на каждом компьютере, участвующем в проекте. Реплики синхронизируются посредством обмена (дифференциальными) скриптами. Обмен скриптами может осуществляться с использованием различных каналов связи, включая электронную почту (поддержка SMTP и POP3, интеграция с MAPI-клиентами, Gmail) и локальную сеть. Code Co-op имеет встроенную одноранговую вики-систему, которую можно использовать для интеграции документации с программным проектом. Также возможно создание текстовых вики-баз данных, к которым можно обращаться с помощью упрощённого SQL непосредственно со страниц вики.
История
Code Co-op была одной из первых распределённых систем контроля версий. Она была представлена на 7-м семинаре по управлению конфигурациями систем в мае 1997 года. Разработка Code Co-op началась в 1996 году, когда была основана компания Reliable Software, занимающаяся разработкой распределённого программного обеспечения. Reliable Software нуждалась в инструменте для совместной работы, который бы функционировал между Соединёнными Штатами и Польшей. Единственным надёжным и доступным средством связи между этими странами была электронная почта, поэтому возникла идея использовать её для обмена патчами (diffs). Разумеется, при такой медленной передаче данных использование централизованного репозитория было невозможным. Каждый пользователь Code Co-op должен был иметь полную реплику репозитория, включая историю изменений. Задача сводилась к разработке распределённой базы данных, использующей медленную и ненадежную связь для синхронизации (позже была добавлена и более быстрая синхронизация по локальной сети). Также следовало, что синхронизация между несколькими узлами должна использовать протокол типа "одноранговый" (peer-to-peer). В 2018 году исходный код Code Co-op на C++ был опубликован под лицензией MIT.
Теоретические основы
Code Co-op — пример распределённой базы данных. Локальные репозитории рассматриваются как реплики этой виртуальной базы данных. Каждая фиксация соответствует распределённому коммиту — неблокирующей версии двухфазного коммита.