GNU Bazaar

Материал из Национальной библиотеки им. Н. Э. Баумана
Bazaar
Bazaar-logo.png
Type Public
Traded as GNU GPL 2
Founded 14 December 2007 года; 14 years ago (2007-12-14)
Area served Worldwide
Industry VCS (Version Control System)
Website bazaar.canonical.com
Written in Python, Pyrex, Си
Launched 14 December 2007 года; 14 years ago (2007-12-14)
Current status Active


Bazaar (ранее известная как Bazaar-NG, имя утилиты командной строки bzr) — распределённая система управления версиями, спонсор разработки которой фирма Canonical Ltd.. Система Bazaar разработана с целью облегчить работу над развитием свободных и открытых проектов для всех желающих.

История

Название «Bazaar» впервые было использовано в проекте GNU arch. Сейчас эту версию называют Baz, чтобы не путать с современной версией ПО Bazaar. ПО Baz впервые появилось в октябре 2004 года. Продукт был разработан Робертом Коллинзом – сотрудником компании Canonical. Он работал над этим продуктом до 2005 года, пока не вышел новый проект Bazaar-NG (текущая версия). В феврале 2005 года компания Canonical наняла нового разработчика – Мартина Пула, который начал разработку новой версии Bazaar. С самого начала, продукт Bazaar задумывался, как продукт отличный от GNU и Baz. Он имеет совсем другой набор команд, код и дизайн. Компания задумывала использовать продукт Bazaar, как стенд для тестирования функций, которые позже будут интегрированы в ПО Baz. Но уже в середине 2005 года большинство разработчиков сфокусировалось на разработке продукта Bazaar как независимого, и работа над Baz прекратилась.

Поддерживаемые ОС

  • Windows,
  • Ubuntu,
  • Debian,
  • SUSE,
  • Fedora,
  • OS X,
  • FreeBSD,
  • Solaris,
  • Gentoo,

и другие.

Основные концепции

Ревизия — это сохраненное состояние файлов и директорий, включая их содержимое и иерархию в заданный момент времени. С ревизией также связана мета-информация, например: автор изменения, дата изменения, комментарий связанный с изменением, родительские ревизии от которых произведена данная ревизия;

После создания, ревизии не меняются и могут быть идентифицированы глобально уникальным номером ревизии (revision-id), например таким: pqm@pqm.ubuntu.com-20071129184101-u9506rihe4zbzyyz Идентификаторы ревизий создаются в момент фиксации (commit) изменений, или в момент импорта ревизий из других систем. Идентификаторы ревизий необходимы для функционирования системы, но вряд ли кто-то сможет использовать идентификатор такого типа в разговоре. Специально для упрощения идентификации ревизий разработаны специфичные для ветки номера ревизий.

Номера ревизий генерируются «на лету» в момент исполнения команд и представляют из себя последовательно увеличивающийся номер. Таким образом первая ревизия имеет номер 1, следующая за ней, более поздняя, ревизия - номер 2 и так далее. При объединении изменений с других веток, номер ревизии представляется тремя числами, разделенными точками:

  1. Номер ревизии для данной ветки, от которой были произведены объединенные изменения;
  2. Порядковый номер (счетчик) объединенной ветки. Так как объединение может затрагивать сразу несколько веток, этот номер служит их счетчиком;
  3. Порядковый номер ревизии с момента создания объединяемой ветки;
  • Пример: 3112.1.5

Рабочее дерево — это директория под контролем версий содержащий файлы, которые может редактировать пользователь. Рабочее дерево ассоциировано с веткой. Многие из команд Bazaar используют рабочее дерево для своей работы. Например, команда commit (зафиксировать изменения) создает новую ревизию на основе текущего состояния рабочего дерева.

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

Репозиторий — это хранилище ревизий. Обычно, ветка имеет свой собственный репозиторий, но также несколько веток могут разделять один репозиторий, что бы уменьшить используемое ветками место на диске.

Такое разделение концепций позволяет более гибко использовать Bazaar, в том числе и как централизованную систему.

2 набора сценариев:

  1. Разделяемые репозитории (англ. Shared repositories) — в этом случае рабочее дерево и ветка находятся в одной директории, но репозиторий находится на одну директорию выше, что позволяет хранить информацию о ревизиях только в одном месте. Такой сценарий позволяет не тратить место на полные копии ревизий, если ветки, находящиеся под репозиторием отличаются незначительно, например, относятся к одному проекту.
  2. Легковесные рабочие копии' (англ. Lightweight checkouts) — ветка и рабочее дерево находятся в разных местах. Этот сценарий похож на использование централизованной системы контроля версий, когда удаленный репозиторий хранит всю информацию о ревизиях, а рабочая копия представляет из себя только рабочие файлы и директории.

Основные отличия от других VCS

  • Bazaar использует концепцию основной линии разработки. Т.е. можно визуально отделить ревизии созданные на вашей ветке от ревизий созданных на объединенных ветках. В случае Git, или Mercurial ревизии созданные на объединенных ветках просто сольются в единый поток с ревизиями созданными на вашей ветке.
  • Каждая ветка в Bazaar хранится в отдельной директории (по сравнению с переключением веток в одной директории);
  • С отдельными ветками можно работать стандартными средствами операционной системы;
  • Bazaar может работать и в централизованном стиле (почти как CVS или SVN). Используйте команды bzr co, bzr up при централизованной работе, bzr pull, bzr push, bzr merge - при децентрализованной и bzr bind, bzr unbind для переключения между стилями работы.
  • Bazaar поддерживает полный набор символов Unicode в именах файлов. Система также позволяет использовать Unicode для составления комментариев к ревизиям, в именах авторов изменений и т. д.

Совместная работа с другими VCS

Bazaar поддерживает работу напрямую с некоторыми другими системами контроля версий. [1] Пользователи могут создавать новые ветки на основе репозиториев других систем (таких как SVN или Git), делать локальные изменения и фиксировать их в Bazaar-ветке, и затем отправлять свои изменения назад в оригинальный репозиторий. Bazaar поддерживает базовые операции с SVN (требуется плагин bzr-svn), а также с Git (требуется плагин bzr-git). Также ведется работа над поддержкой Mercurial.

Публичные хранилища c поддержкой Bazaar

Проекты, использующие Bazaar

Bazaar используют как при работе над многими открытыми ипроектами, так и рядом коммерческих компаний: [2]

Название проекта Описание проекта
APT Менеджер пакетов Debian (Debian Packaging Tool)
AllTray Приложение Docker
Apport Автоматическое предотвращение аварий, аналитика и отчётность
Backwards Файловая система
basenji Портативный инструмент индексации объема
BeeSeek ПО с открытым исходным кодом. Поисковая система
BitlBee IRC ( протокол прикладного уровня для обмена сообщениями в режиме реального времени), Система мгновенного обмена сообщениями
ctrlproxy IRC прокси-сервер
Download Machine Не интерактивная программа для загрузки HTTP, FTP и FSP
Drizzle Базы данных SQL для облачных сред и сети (web)
Emacs Настраиваемый текстовый редактор
Exaile Музыкальный плейер для GTK+
FSP client FTP-клиент для FSP протокола
FSP project Набор инструментов для FSP протокола
GetYellow ПО, которое позволяет осуществлять поиск в самых популярных «желтых страницах» и извлекать полезную информацию: бизнес информацию, адреса, телефоны, электронную почту.
Gnash Видеопроигрыватель GNU SWF
GNOME Do Мощное и быстрое ПО, позволяющее дистанционно управлять рабочим столом
Gwibber ПО с открытым исходным кодом. Клиенты для создания микроблогов. Поддерживает Twitter, Identi.ca, StatusNet, Facebook, Flickr, Digg, FriendFeed и Qaiku.
IPI.Manager ПО для контроля выполнения задач. Отслеживает сроки, создает напоминания о созданных сотрудниками задачах и о просроченных задачах.
iPython Интерактивная оболочка, предоставляющая инструментарий для использования Python. Предоставляет дополнительный синтаксис, подсветку кода.
java-gnome ПО, предоставляющая инструментарий для написания программ GTK и GNOME Source code link
jaramiko Внедрение SSH v2 на основе Java
Leo Текстовый редактор c проверкой правописания на основе Python (Qt & GTK)
Mailman Менеджер списков рассылки
man-db Ручной браузер и база данных
Mifar Архив изображений. Система отслеживания проектов, изображений и других файлов
MySQL Cвободная реляционная система управления базами данных

Примечания

Ссылки