bazaar git vcs

Кратко о Bazaar для пользователей других DVCS

Dmitry Vasiliev 13:08, 2009 12 10

В последнее время появилось много заметок в которых люди использующие Git, или Mercurial впервые столкнувшись с Bazaar начинают его ругать вместо того, что бы прочитать документацию и попытаться расширить свое понимание. Мне это тем более странно т.к. в данный момент я активно использую и Bazaar и Git и для меня это просто инструменты, каждый со своими плюсами и минусами. Понимание работы с каким-либо инструментом обычно требует терпения, времени и изменения сознания, так что для меня авторы ругательных постов про Bazaar автоматически попадают в категорию "не смогли осилить". С другой стороны, если инструмент и совсем "не по рукам", то может и не стоит пользоваться?

Ниже я совсем кратко постараюсь осветить основные отличия Bazaar от других DVCS для тех, кто действительно хочет узнать что-то новое:

  • Bazaar использует концепцию основной линии разработки. По-простому, это значит, что можно визуально отделить ревизии созданные на вашей ветке от ревизий созданных на объединенных ветках. В случае Git, или Mercurial ревизии созданные на объединенных ветках просто сольются в единый поток с ревизиями созданными на вашей ветке. Более подробно про концепцию основной линии разработки можно почитать в блоге "Базарный день" в трех частях: 1-я часть, 2-я часть, 3-я часть.
  • Да, каждая ветка в Bazaar хранится в отдельной директории. Лично я вижу здесь ряд преимуществ по сравнению с переключением веток в одной директории:
    • С отдельными ветками можно работать стандартными средствами операционной системы.
    • В течение рабочего процесса в каждой ветке у меня накапливается набор "левых", относящихся к ветке, файлов (например, тестовые данные, или скрипты) - я не знаю как такое по-простому осуществить в случае переключения веток в одной директории.
  • Bazaar может работать и в централизованном стиле (почти как CVS, или Subersion). Используйте команды bzr co, bzr up при централизованной работе, bzr pull, bzr push, bzr merge - при децентрализованной и bzr bind, bzr unbind для переключения между стилями работы.

Comments All comments

Comment by hodzanassredin on 15:39, 2009 12 10

hodzanassredin's Gravatar

Спасибо за статью.
1. Насчет первого пожалуй соглашусь, хотя стоит почитать поподробнее.
2. Чем второй пункт отличается от стандартного клонирования репозиторая в том же HG?
3. помоему сомнительное преимущество, я тоже самое могу сделть и в HG. Или я, что-то не так понял?
Основная причина например для (ентерпрайз) дот нет разработчиков, это осутствие интеграции с VisualStudio, а у Git и HG она на уровне. Так что критерием выбора следует считать не только возможности системы, но и инеграцию со средами разработки, а это в некоторых случаях решающий критерий. Тот же Tortoise есть для Git и HG но для BZR насколько я помню вообще не существует. Хотя я понимаю, что можно работать и в консоли, но обычно выбор системы зависит от мнения всех разарботчиков в команде, а не все проекты делаются апологетами коммандной строки.
P.S. Может несколько сумбурно и с ошибками, но очень хотелось довести свою мысль.

Comment by Dmitry Vasiliev on 16:41, 2009 12 10

Dmitry Vasiliev's Gravatar

Здесь все очень кратко, и это не преимущества, а именно отличия. Преимущества это, или нет - зависит от ситуации. Просто если ты знаешь несколько инструментов, то ты можешь применять наиболее подходящий при необходимости - вот это преимущество. :-)

2. В одной директории всегда находится только одна конкретная ветка. Тогда как в Git и Hg там находится репозиторий и они поощряют именно переключение между ветками в одном репозитории. Т.е. технически ты можешь то же сделать склонировав репозиторий и в каждом переключиться на отдельную ветку. Но в этом обычно нет смысла, т.к. у них есть именно возможность переключаться. Просто это одна из тем поклепа на Bzr, но это просто способ его работы и я написал когда это можно использовать.

3. К сожалению, пока не сильно разбираюсь в Hg, но в Git, насколько я знаю, такого точно нет. С Bzr можно работать в централизованном стиле, т.е. может быть центральная ветка (репозиторий в терминах SVN/CVS) и ее удаленные рабочие копии (вообще без истории). Ну и соответственно практически для всех операций изменения, или просмотра истории нужен доступ к репозиторию.

Я, к сожалению, практически не пользуюсь GUI для Bzr, кроме QBzr, так что здесь не могу много советовать. TortoiseBzr точно есть, но, насколько я знаю, от него сейчас отказались в пользу Bazaar Explorer. Думаю Саша Бельченко (http://twitter.com/bialix) может рассказать намного больше об этом, тем более, что в свое время он поддерживал Bzr для Windows (сейчас тоже старается заниматься этим по мере возможностей) и ведет блог "Базарный День".

Естественно выбор зависит от большого количества факторов, просто не надо завидев неизвестный инструмент сразу его ругать (тем более публично :) - в этом основная идея заметки.

Comment by bialix on 20:09, 2009 12 10

bialix's Gravatar

от TortoiseBzr не отказались, просто его разработка сильно замедлилась, а вот Bazaar Explorer вырвался вперед по фичам и стабильности. TortoiseBzr по-прежнему развивается, но медленее чем хотелось бы.

Про интеграцию в Visual Studio: да, нативной интеграции нету, увы. Один студент пытался ее сделать, но дело заглохло.

Comment by bialix on 20:14, 2009 12 10

bialix's Gravatar

Кстати вот, насчет почему отдельные каталоги-ветки хороши можно понять из рецепта http://hgtip.com/tips/beginner/2009-12-09-finding-uncommon-changesets для hg. Для получения достаточно простой информации в hg приходится делать множество лишних телодвижений, потому что в одном клоне репозитория могут присутствовать ветки, которые мешают под ногами.

Comment by Nikita Kabardin on 23:01, 2009 12 10

Nikita Kabardin's Gravatar

Так а че, это все отличия? Так а за что ругают-то?

Comment by Dmitry Vasiliev on 00:27, 2009 12 11

Dmitry Vasiliev's Gravatar

> Так а че, это все отличия?

Основные моменты

> Так а за что ругают-то?

Вот мне парочка тем запомнилась:

- В Bazaar нет веток, только клонирование! (Это по второму пункту)
- Один товарищ делал bzr up вместо bzr pull и говорит, что Bazzar вообще не обновляет ничего! (Это по третьему пункту)

Comment by Dmitry Vasiliev on 00:34, 2009 12 11

Dmitry Vasiliev's Gravatar

> TortoiseBzr по-прежнему развивается, но медленее чем хотелось бы.

Вот я и смотрю, что он как-то практически пропал с горизонта.

Мне уже по привычке проще несколько символов набрать, чем мышкой тыкать. Но вот QBzr сильно помогает когда надо "с птичьего полета" поглядеть ревизии, или красивые диффы. :-)

Comment by hodzanasredin on 12:35, 2009 12 13

hodzanasredin's Gravatar

Спасибо за разъяснения. По поводу центральной ветки: да в принципе в hg такого нет; А вот насчет bzrexplorer и tortoise это по моему зря. Tortoise бренд и его нельзя убивать. Надо переименовать bzr explorer в BZRTortoiseMega :-)

Comment by bialix on 18:35, 2009 12 13

bialix's Gravatar

С TortoiseBzr проблема ровно одна -- это Windows-специфичный продукт, а популярность этой платформы начала уменьшаться. Как следствие меньше желающих развивать такой продукт.

Comment by MyFreeWeb on 20:55, 2010 1 5

MyFreeWeb's Gravatar

А где самое главное для упоротых фанатов гита?
Bazaar умеет их любимый стиль работы (у них по-умолчанию) - shared working tree. С ним быстрее, меньше места жрет, но сложнее. Получается примерно то же самое, что и гит, но с умным merge и прочими штучками.

И да, с плагином historycache команда log очень даже быстрая.

Comment by Dmitry Vasiliev on 21:30, 2010 1 5

Dmitry Vasiliev's Gravatar

Я не думаю, что это самое главное - все же с каждым инструментом стоит работать тем методом для которого он оптимизирован. Git тоже можно использовать с отдельными директориями под отдельные ветки. ;-)

Add comment

Name:
Email: (Never will be published.)
Web site:
Comment: (Paragraphs divided by empty lines, line breaks and links will be automatically formatted.)