Darcs

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: darcs.net

Darcs — распределённая система управления версиями с ориентиром на патчи (изменения), разработанная для хранения и обмена истории изменений в виде независимых патчей. Проект возник в начале 2000-х годов и реализован преимущественно на языке Haskell. В своей архитектуре Darcs фокусируется на представлении истории как множества изменений, которые можно выбирать, переставлять и частично переносить между репозиториями, что отличает его от более традиционных систем, основанных на дереве коммитов.

Основные концептуальные особенности Darcs включают интерактивную работу с патчами, возможность выборочного применения изменений и разрешение конфликтов на уровне патчей с использованием теории коммутативности патчей. Darcs использует формальный аппарат для определения зависимости и независимости изменений, что позволяет производить операцию "перемещения" или "вишинга" патчей между ветками без необходимости применения всего набора коммитов подряд. Разработка и поддержка были ориентированы на исследование новых подходов к управлению историей разработки, хотя в практике он конкурировал с другими системами контроля версий и со временем утратил часть популярности.

  • Патч-ориентированная модель: история представлена как набор патчей, каждый из которых описывает изменение, и с которыми можно работать как с первичными сущностями.
  • Распределённость: поддержка автономных локальных репозиториев и обмена патчами между ними без центрального сервера.
  • Выборочное применение изменений: возможность выбирать отдельные патчи для передачи или применения, а не обязательная линейная последовательность коммитов.
  • Интерактивное разрешение зависимостей: пользователю предоставляются механизмы для интерактивного управления зависимостями между патчами при их перемещении.
  • Алгоритмы коммутативности патчей: формальные методы для определения, какие патчи можно переставлять местами или применять в другом порядке без потери целостности истории.
  • Реализация на Haskell: большая часть кода написана на Haskell, что повлияло на стиль реализации и подход к формальным свойствам патчей.
  • Инструменты работы с конфликтами: механизмы обнаружения и разрешения конфликтов на уровне патчей, а также комбинирования изменений.
  • Командная строка и скриптируемость: набор команд для управления репозиториями, патчами и синхронизацией, подходящий для автоматизации.
  • Поддержка исторических операций: возможности отката, исследования и реорганизации истории посредством манипуляций с патчами.
  • Применение в исследованиях и нишевых проектах: используем в проектах и образовательных задачах, где интересен альтернативный подход к представлению истории изменений.
Подробнее