Монотонный (программное обеспечение)
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Разработчик(и) | Монотонная команда |
---|---|
Первоначальный выпуск | 6 апреля 2003 г |
Финальный выпуск | 1.1 [1] / 4 мая 2014 г |
Репозиторий | |
Написано в | С++ |
Операционная система | Unix , Linux , BSD , Mac OS X , Windows |
Доступно в | английский, итальянский, шведский, португальский, немецкий, испанский |
Тип | Контроль версий |
Лицензия | GPL-2.0 или новее |
Веб-сайт | www ![]() |
Monotone — это инструмент с открытым исходным кодом программный для распределенного контроля версий . Он отслеживает изменения в файлах, группирует наборы изменений в наборы изменений и отслеживает историю переименований. В проекте основное внимание уделяется честности, а не производительности. [2] Monotone предназначен для распределенной работы и интенсивно использует криптографические примитивы для отслеживания версий файлов (через SHA-1 безопасный хэш ) и для аутентификации действий пользователя (с помощью RSA криптографических подписей ).
История
[ редактировать ]Вехи
[ редактировать ]Версия Monotone 0.26 внесла серьезные изменения во внутренние структуры базы данных, включая новую структуру, известную разработчиками Monotone как реестр . [3] Базы данных Monotone, созданные в версии 0.26, не могут обмениваться ревизиями со старыми базами данных Monotone. Старые базы данных сначала необходимо обновить до нового формата. Новый протокол netsync несовместим с более ранними версиями Monotone.
Как вдохновение Git
[ редактировать ]В апреле 2005 года Monotone стал предметом повышенного интереса в FOSS сообществе после того, как Линус Торвальдс упомянул его как возможную замену BitKeeper в процессе разработки Linux . В сообщении в списке рассылки ядра Linux Торвальдс похвалил Monotone и пренебрег Subversion (и, как следствие, всеми клиент-серверными системами контроля версий): [4]
Не трудитесь рассказывать мне о подрывной деятельности. Если необходимо, начните читать о «монотоне». Это кажется наиболее жизнеспособной альтернативой, но не приставайте к разработчикам настолько, чтобы они не выполнили никакой работы. Они уже знают о моих проблемах ;)
— [4]
Вместо того чтобы использовать Monotone, Торвальдс решил написать собственную SCM -систему Git . В дизайне Git используются некоторые идеи Monotone, но у этих двух проектов нет общего исходного кода. Git уделяет гораздо больше внимания высокой производительности, вдохновленный длительной историей и требовательными распределенными режимами совместной работы, используемыми Торвальдсом и другими авторами ядра Linux. Позже Торвальдс так прокомментировал дизайн и производительность Monotone:
Если вам нужна система контроля версий, написанная на C++, попробуйте Monotone. Действительно. Они используют «реальную базу данных». Они используют «хорошие объектно-ориентированные библиотеки». Они используют «красивые абстракции C++». И, откровенно говоря, в результате всех этих дизайнерских решений, которые кажутся некоторым людям из CS так привлекательными, конечным результатом является ужасный и неустранимый беспорядок.
— [5]
Ключевой вопрос, обсуждаемый [6] заключался в том, должна ли замена BitKeeper поддерживать выбор вишен, при котором специалист по обслуживанию дерева может утверждать подмножество исправлений, одновременно отклоняя другие на индивидуальной основе. Торвальдс утверждал, что этот подход «приводит к неправильной динамике и психологии в системе», перекладывая бремя на вышестоящих сопровождающих , а не заставляя нижестоящих сопровождающих прилагать больше усилий для защиты своих деревьев от мусора. Он также утверждал, что Monotone прав в своем отвращении к сбору вишен как к функции, но затем не смог зайти достаточно далеко, не упрощая «выбрасывание» нечистых рабочих деревьев после того, как их цель достигнута. [7] Торвальдс также отметил, что, по его мнению, Monotone в то время не достиг уровня производительности, необходимого для такого крупного проекта, как разработка ядра Linux.
Дизайн
[ редактировать ]Как и GNU Arch и в отличие от Subversion , Monotone использует распределенный подход к контролю версий. Monotone использует хэши SHA-1 для идентификации конкретных файлов или групп файлов, как в Git и Mercurial , вместо линейных номеров версий. Каждый участник ведет свою собственную историю изменений, хранящуюся в локальной базе данных SQLite .
Честность
[ редактировать ]До серьезной оптимизации в версии 0.27 упор Monotone на правильность, а не на оптимизацию, часто обвиняли в неудачном первоначальном опыте. Первым действием нового пользователя часто является синхронизация (клонирование) большой существующей базы данных Monotone, действие, которое часто занимало часы для больших баз данных из-за обширной проверки и проверки целостности, которую Monotone выполняет при перемещении ревизий по сети. После заполнения исходной базы данных (клона) последующие действия обычно выполняются быстрее. По состоянию на июль 2010 г. [update], еще есть возможности для дальнейшей оптимизации некоторых более редких функций. [ нужна ссылка ]
Рабочий процесс
[ редактировать ]Monotone особенно сильна в поддержке рабочего процесса расхождения/слияния, чего он частично достигает за счет того, что всегда разрешает фиксацию перед слиянием. [8]
сеть
[ редактировать ]Хотя изначально Monotone поддерживал множество сетевых протоколов для синхронизации деревьев, теперь он использует исключительно собственный протокол под названием netsync , который более надежен и эффективен и имеет некоторые концептуальные основы с rsync и cvsup . (Однако, начиная с версии 0.27, протокол netsync можно использовать для любого потока, в частности, включая соединения ssh.) Netsync имеет собственный порт, назначенный IANA (4691), и более старые его версии поддерживаются подключаемым модулем . Wireshark для анализа трафика. Отдельного сервера Monotone нет, поскольку в качестве сервера может выступать любой клиент Monotone.
Другие особенности
[ редактировать ]Другие особенности Monotone включают в себя:
- Хорошая поддержка интернационализации и локализации
- Портативный дизайн, реализованный на C++.
- Высокая целостность — ключевая цель проектирования
- Monotone может импортировать проекты CVS .
- Подписание редакций с использованием RSA сертификатов
- Легко освоить благодаря набору команд, аналогичному набору команд CVS.
- Очень хорошо разветвляется (как расхождения внутри ветки, так и именованные ветки) и слияние.
- Хорошая документация
- Очень низкие эксплуатационные расходы
- Полная и всеобъемлющая библиотека Perl , которая позволяет вам полностью управлять Monotone из сценария Perl (mtn-browse использует это)
Недостатки
[ редактировать ]![]() | Этот раздел необходимо обновить . ( октябрь 2021 г. ) |
По состоянию на январь 2008 г. [update]К возможным недостаткам Monotone относятся:
- Потенциальные пользователи не могут получить (или зафиксировать) из-за прокси-сервера (очень часто встречается в корпоративных средах) из-за протокола, отличного от http.
- Проблемы с производительностью для некоторых операций (наиболее заметное начальное нажатие)
Выполнение
[ редактировать ]Monotone реализован на современном диалекте C++ поверх библиотеки Boost , библиотеки шифрования Botan и библиотеки базы данных SQLite . Monotone поддерживает настройку и расширение с помощью функций-перехватчиков, написанных на языке программирования Lua . Монотонный процесс сборки автоматизирован с помощью BuildBot и включает обширные регрессионные тесты .
См. также
[ редактировать ]- Сравнение программного обеспечения для контроля версий
- Список программного обеспечения для контроля версий
Ссылки
[ редактировать ]- ^ «НОВОСТИ» . 4 мая 2014 года . Проверено 16 июля 2019 г.
- ^ «Обзор 7 систем контроля версий» . 18 сентября 2008 года . Проверено 1 ноября 2010 г.
- ^ Что такое реестры
- ^ Jump up to: а б Линус Торвальдс (6 апреля 2005 г.). «LKML: Линус Торвальдс: Сага о Kernel SCM» . ЛКМЛ .
- ^ Линус Торвальдс (6 сентября 2007 г.). «Re: [RFC] Преобразование builin-mailinfo.c для использования The Better String Library» . ГМАНЕ . Архивировано из оригинала 6 февраля 2016 г.
- ^ Дэвид Вудхаус (7 апреля 2005 г.). «LKML: Дэвид Вудхаус: Сага о Kernel SCM» . Проверено 23 февраля 2017 г.
- ^ Линус Торвальдс (7 апреля 2005 г.). «LKML: Линус Торвальдс: Re: Сага о Kernel SCM» . ЛКМЛ .
- ^ «Работа с форком — монотонная документация» . Проверено 21 ноября 2010 г.