Jump to content

Даркс

Даркс
Оригинальный автор(ы) Дэвид Раунди
Разработчик(и) Гийом Хоффманн и др.
Первоначальный выпуск 3 марта 2003 г .; 21 год назад ( 03.03.2003 ) [1]
Стабильная версия
2.18.2 [2]  Отредактируйте это в Викиданных / 24 марта 2024 г .; 4 месяца назад ( 24 марта 2024 г. )
Репозиторий
Написано в Хаскелл
Операционная система Unix , Linux , BSD , Apple MacOS , MS Windows
Тип Контроль версий
Лицензия GPL-2.0 или новее
Веб-сайт дарки .сеть  Edit this on Wikidata

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

Даркс относится к патчам как к гражданам первого сорта . Для пользователя репозиторий может рассматриваться как набор патчей, где каждый патч не обязательно упорядочен по отношению к другим патчам, т.е. набор патчей представляет собой лишь частично упорядоченный набор . Во многих случаях патчи могут независимо передаваться между различными репозиториями.

Многие операции ветвления, слияния и выбора элементов, которые требуют дополнительных команд в системах на основе моментальных снимков, таких как Git или Mercurial, могут быть выполнены непосредственно с помощью Darcs с помощью обычных команд «pull» и «push». С точки зрения пользовательского интерфейса это означает, что в Darcs меньше команд. Эти команды более интерактивны: можно более точно выбрать, какими патчами они хотят обмениваться с удаленными репозиториями.

Патчи репозитория упорядочены линейно. Darcs автоматически вычисляет, можно ли переупорядочить патчи (операция, называемая коммутацией), и как это сделать. Эти расчеты реализуют так называемую «теорию заплат».

Патч Darcs может содержать изменения следующих видов:

  • изменения строк,
  • создание и удаление файлов и каталогов,
  • перемещение файлов и каталогов,
  • замена слов (обычно используется при рефакторинге кода, например, переименовывает все вхождения «foo» в «bar» в данном файле).

Понятие зависимости между патчами определяется синтаксически. Интуитивно понятно, что патч B зависит от другого патча A , если A предоставляет контент, который B. модифицирует Это означает, что патчи, изменяющие разные части кода, по умолчанию считаются независимыми. Чтобы устранить случаи, когда это нежелательно, Darcs позволяет пользователю указывать явные зависимости между патчами.

Начиная с версии 2.10, Darcs использует терпение. [ нужна ссылка ] по умолчанию.

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

Недостатки

[ редактировать ]

Darcs подвергался критике за проблемы с производительностью. [6] [7] Сюда входят проблемы, связанные с алгоритмами слияния Darcs 1.x, которые продемонстрировали экспоненциальную работу по слиянию определенных конфликтов. Хотя это и не было полностью решено в последующих версиях Darcs, [8] частота экспоненциальных слияний действительно заметно снизилась.

Все еще остаются ошибки, из-за которых не удается объединить рекурсивные конфликты. [9]

См. также

[ редактировать ]
  1. ^ «Журнал изменений для дарков» . Хакадж . Проверено 24 июня 2018 г.
  2. ^ «darcs: распределенная, интерактивная, интеллектуальная система контроля версий» .
  3. ^ Раунди 2005 , с. 2: «Одна из проблем, с которыми я столкнулся при работе над первоначальными документами на C++, заключалась в том, что у меня не было кода модульного тестирования. В течение двух недель после первой записи darcs я начал использовать QuickCheck для проверки функций патча и в тот же день исправил ошибку, обнаруженную QuickCheck. QuickCheck позволяет очень легко определить свойства, которыми должны обладать функции, которые затем проверяются на случайно сгенерированных данных».
  4. ^ Раунди, Дэвид (21 октября 2008 г.), «предпочитаю рекурсивную аббревиатуру (так в оригинале) смущающей», Darcs (Commit), Darcs Hub .
  5. ^ «Два», Даркс
  6. ^ Марлоу, Саймон (7 марта 2007 г.), «Текущий статус Darcs», Пользователи Darcs (список рассылки), OSUOSL .
  7. ^ Фендт, Роберт (9 января 2009 г.), «Обзор DVCS: одна система, которая будет управлять всеми?», Developer Network , vol. 1, Linux Foundation, заархивировано из оригинала 28 февраля 2009 г.
  8. ^ «КонфликтыFAQ», Wiki , Darcs .
  9. ^ «Проблема 1520. Неопровержимый шаблон не выполнен для шаблона Data.Maybe.Just a2», Bug Tracker , Darcs .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f0a6ff544b70d9a23da4b3ddfd57f32d__1719215940
URL1:https://arc.ask3.ru/arc/aa/f0/2d/f0a6ff544b70d9a23da4b3ddfd57f32d.html
Заголовок, (Title) документа по адресу, URL1:
Darcs - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)