Автор (ы) | Дэвид Раунди |
---|---|
Разработчик (и) | Гийом Хоффманн и др. |
Первый выпуск | 3 марта 2003 г.; 17 лет назад (2003-03-03) |
Стабильный выпуск | 2.16.2 / 21 августа 2020 г.; 2 месяца назад (2020-08-21) |
Репозиторий | |
Написано на | Haskell |
Операционная система | Unix, Linux, BSD, Apple macOS, MS Windows |
Тип | Контроль версий |
Лицензия | GNU GPL |
Веб-сайт | darcs.net |
Darcs - это система распределенного контроля версий, созданная Автор Дэвид Раунди. Ключевые функции включают возможность выбора, какие изменения принимать из других репозиториев, взаимодействие с другими локальными (на диске) репозиториями или удаленными репозиториями через SSH, HTTP или по электронной почте, а также необычно интерактивный интерфейс. Разработчики также подчеркивают использование передовых программных средств для проверки правильности: выразительная система типов функционального языка программирования Haskell обеспечивает соблюдение некоторых свойств, а рандомизированное тестирование с помощью QuickCheck проверяет многие другие. Это рекурсивное сокращение для Darcs Advanced Revision Control System .
Darcs рассматривает патчи как первоклассных граждан. Для пользователя репозиторий можно рассматривать как набор исправлений, где каждый исправление не обязательно упорядочено по отношению к другим исправлениям, то есть набор исправлений представляет собой только частично упорядоченный набор. Во многих случаях патчи могут независимо передаваться между различными репозиториями.
Многие операции ветвления, слияния и выбора вишни, которые потребуют дополнительных команд с системами на основе моментальных снимков, такими как Git или Mercurial, могут быть напрямую выполняется с помощью Darcs с помощью обычных команд «тянуть» и «толкать». С точки зрения пользовательского интерфейса это означает, что в Darcs меньше команд. Эти команды более интерактивны: можно более точно выбрать, какими патчами они хотят обмениваться с удаленными репозиториями.
Патчи репозитория линейно упорядочены. Darcs автоматически вычисляет, можно ли переупорядочить патчи (операция, называемая коммутацией), и как это сделать. Эти расчеты реализуют так называемую «теорию пятен».
Патч Darcs может содержать изменения следующих видов:
Понятие зависимости между патчами определяется синтаксически. Интуитивно понятно, что патч B зависит от другого патча A, если A предоставляет контент, который изменяет B. Это означает, что патчи, изменяющие различные части кода, по умолчанию считаются независимыми. Чтобы устранить случаи, когда это нежелательно, Darcs позволяет пользователю указать явные зависимости между патчами.
Начиная с версии 2.10, Darcs использует по умолчанию.
Darcs возникла в результате усилий Дэвида Раунди по разработке нового формата патчей для GNU arch в июне 2002 года. Эти обсуждения не привели к принятию какого-либо кода до Arch, но привел к концепции теории заплат. После написания начальной версии Darcs на C ++, осенью 2002 года была написана версия Haskell, которая была выпущена для широкой публики в апреле 2003 года. Darcs 2.0 был выпущен в апреле 2008 года и представил более надежный формат репозитория, а также новая семантика патчей под названием «darcs-2», направленная на минимизацию проблем экспоненциального слияния. Текущая стратегия развития направлена на оптимизацию и добавление новых функций при сохранении того же формата репозитория.
Darcs подверглась критике за производительность. Одна из наиболее заметных проблем была связана с алгоритмом слияния в Darcs 1.x, который мог выполнять экспоненциальную работу по слиянию некоторых конфликтов. Хотя проблема не была полностью исправлена в Darcs 2, частота экспоненциальных слияний была уменьшена. По-прежнему остаются ошибки, из-за которых слияние рекурсивных конфликтов не удается.
В Викиучебнике есть книга по теме: Understanding Darcs |