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