Введение

Darcs — это распределённая система управления версиями, созданная Дэвидом Раунди. Ключевые особенности включают в себя возможность выбора изменений для принятия из других репозиториев, взаимодействие как с другими локальными (на диске) репозиториями, так и с удалёнными репозиториями через SSH, HTTP или электронную почту, а также необычно интерактивный интерфейс. Разработчики также подчёркивают использование современных программных средств для проверки корректности: выразительная система типов функционального языка программирования Haskell обеспечивает соблюдение некоторых свойств, а рандомизированное тестирование с помощью QuickCheck подтверждает многие другие. Название является рекурсивным акронимом от Darcs Advanced Revision Control System.

История

Darcs возник из усилий Дэвида Ронди по разработке нового формата патчей для GNU arch в июне 2002 года. Эти обсуждения не привели к внесению кода в Arch, но послужили основой для разработки теории патчей. После написания первоначальной версии Darcs на C++, версия на Haskell была написана осенью 2002 года и опубликована в апреле 2003 года. Darcs 2.0 был выпущен в апреле 2008 года и представил более надёжный формат репозитория, а также новую семантику патчей под названием "darcs 2", направленную на минимизацию экспоненциальных конфликтов при слиянии. Текущая стратегия разработки сосредоточена на реализации оптимизаций и добавлении новых функций, при этом сохраняется тот же формат репозитория.

Недостатки

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