Украинское сообщество программистов

Сообщество Средства разработки

Лента блогов Средства разработки

Новая стабильная версия Bazaar 2.1.0

bialix, 18.02.2010
Спустя полгода после выпуска стабильного релиза bzr 2.0.0 разработчики Bazaar представляют новую стабильную версию Bazaar 2.1.0 (февраль 2010 года).

Новая версия содержит в себе много разных улучшений и исправлений дефектов, однако ничего революционного (вроде нового формата репозитория) не несёт. Список отдельных улучшений просто огромен (более 200 пунктов), поэтому рассмотрим только ключевые и заметные для пользователей моменты.
  • Значительно уменьшено потребление памяти для выполнения операций (уменьшение почти в два раза). Это значит, что с ветками с большой историей работать будет быстрее и комфортнее.
  • Добавлен новый хук для объединения файлов. Теперь становится возможным для файлов разных типов определять различные алгоритмы объединения изменений. Для использования этой возможности необходимо будет написать соответствущий плагин.


    В качестве примера такого плагина вместе с bzr поставляется плагин news_merge, который должен облегчить процесс объединения изменений в файле NEWS в исходном коде самого bzr. (Файл NEWS в bzr редактируется очень часто, поэтому конфликты возникают очень часто).
  •  В файле .bzrignore теперь можно задавать шаблоны для отключения игнорирования специфичных файлов. Для этого используйте восклицательный знак (!) в начале шаблона.


    Например, игнорируем все файлы кроме *.py:
    * 
    !*.py
  • Функция shelve: теперь имеется возможность использовать внешний редактор для редактирования изменений, которые должны быть отложены "на полочку". Для этого нужно указать редактор в файле конфигурации как опцию change_editor, например:

    change_editor = vimdiff -fo @new_path @old_path
    здесь @new_path и @old_path специальные макросы для подстановки пути к текущей версии файла и зафиксированной его версии.
  • Новая опция unshelve --preview для просмотра отложенных изменений
  • Для checkout теперь можно сделать switch --revision, update --revision
  • При указании ревизии опцией --revision (-r) теперь можно использовать более простой синтаксис в стиле "делай то, что я имею в виду" (DWIM). Т.е. вместо -r tag:foo можно использовать просто -r foo, а вместо -r date:today просто -r today. Префиксы по прежнему можно использовать, и они могут понадобиться в случаях, когда bzr не сможет угадать правильный вариант (например тег 1.1.1 может совпадать с номером ревизии 1.1.1).
  • На Windows в командной строке поддерживаются маски для имен файлов, как на Linux. Раньше такая поддержка существовала в специфичном виде только для команды bzr add, теперь же она реализована в общем виде для всех команд. Поэтому теперь для добавления маски *.obj в файл .bzrignore командой bzr ignore вам нужно позаботиться о том, чтобы аргумент *.obj был взят в кавычки.
  • Поддержка знака тильды (~) как домашнего каталога пользователя в URL вида bzr+ssh://host/~
  • Появился новый раздел в документации: Bazaar System Administrator’s Guide 
  • Значительно переработана документация по плагинам. Кроме основных сведений также содержит автоматически сгенерированную документацию по всем публичным плагинам.
Кроме изменений в самом bzr множество изменений в сопутствующих инструментах и плагинах. Так GUI для bzr Bazaar Explorer меньше чем за 9 месяцев доросло до версии 1.0, с чем мы и поздравляем его автора Йена Клэтворси (Ian Clatworthy).

Разработчики bzr объявили, что предыдущая стабильная версия bzr 2.0 (текущий релиз по состоянию на февраль 2010 — это 2.0.4) будет поддерживаться и далее, но настоятельно рекомендуют переходить на 2.1. Серия 2.1 будет поддерживаться в течение года (как минимум), она же будет включена в дистрибутив Ubuntu Lucid.

Сморите также:

Использование плагина bzr-pipeline для "вечных" локальных правок

bialix, 18.02.2010
Иван Сагалаев описал один из вариантов работы с плагином bzr-pipeline. Иван пишет:
...хочу поделиться bzr-специфичным решением одной практической ситуации, возникающей при групповой работе над проектом.
Работая над общим кодом на локальной машине, иногда бывает нужно делать в нём строго локальные правки: пути к файлам, адреса серверов, отладочное логирование. При этом эти правки никогда не должны попадать в основной бранч проекта.
Часть из них можно и нужно вынести в отдельные локальные конфигурационные файлы, которые просто заигнорировать. Но вот с упомянутым отладочным логированием так не получится — это произвольный код, временно раскиданный по файлам. Ещё один пример такой правки — полное вырезание куска кода, который не критичен для работы, но не даёт проекту завестись с локальном окружении.
В bzr для этой проблемы мне известны два решения: одно прямое, другое — более удобное, с помощью плагина bzr-pipeline. Беда только в том, что в его документации описан несколько другой юзкейс, и я с первого раза вообще не понял, как оно мне поможет. Потом разобрался и решил восполнить пробел.
Читать целиком: http://softwaremaniacs.org/blog/2010/02/18/local-patches-in-bzr-pipeline

Список статей блога bzr-day

bialix, 07.02.2010
Список статей теперь находится на странице http://bzr-day.blogspot.com/p/bzr-day.html





Общие сведения

    Концепции

    Настройки

    Справка по bzr

    Работа с bzr

    Рецепты

    Дополнительно

    Плагины

    bzr-svn

    QBzr

    Блоги


    Список обновлен: 2010/01/15

      Работа с bzr в централизованном стиле

      bialix, 25.01.2010
      Наш читатель и автор плагина bzr-externals Евгений Тарасенко рассказывает о работе с Bazaar в централизованном стиле (а-ля svn). Передаю ему слово.

      Централизованный стиль

      В данной статье я хотел бы обратить внимание на еще один вариант организации работы с системой контроля версий Bazaar, о котором часто забывают в пылу погони за ветками и DVCS. Я говорю о централизованном стиле работы, который используется в Subversion, но в отличии от последнего Bazaar предоставляет намного более гибкий и главное понятный инструмент разработчику. Так в нашем распоряжении оказываются: понятная история ветвлений (попробуйте bzr qlog), локальные фиксации, откат и много других приятных мелочей. Также не стоит забывать что Bazaar расширяемая система и если вам там чего-то не хватает, то можно попробовать написать это самому!

      Итак, чем хорош централизованный стиль:
      • во-первых, вся работа ведется в одной директории что очень актуально для многих IDE, которые забывают про мелкие настройки при переходе в другой каталог
      • во-вторых, если вы используете С++ компилятор то количество дополнительных файлов просто съест ваше время и место на жестком диске при каждом новом построении, а при работе с ветками неизбежно придется компилировать и отлаживать сначала ветку, а после слияния и trunk
      • ну и в-третьих, иногда бывает нужно зафиксировать небольшое изменение (одну ревизию) и тут у вас просто меньше лишних телодвижений в отличии от стилей с feature branch или с переключением веток.

      Про TortoiseBzr

      Для начала, я хотел бы обратить внимание на тот факт, что при установке Bazaar под Windows по умолчанию отключен модуль TortoiseBzr, скорее всего это связано с его некоторой задумчивостью при обновлении статуса иконок файлов, частенько бывает нужно пару раз F5 нажать, чтобы он сообразил что к чему. Поэтому если вы любитель работы из проводника проверьте, что он у вас установлен.

      Базовый набор команд

      Поскольку Bazaar поддерживает различные псевдонимы (алиасы) для команд, то вы можете выбрать для себя наиболее удобный вариант использования:

      checkout, co, qgetnew — извлечь рабочую копию
      commit, ci, qcommit, qci — фиксировать изменения
      update, up, qupdate, qup — обновить рабочую копию

      Я думаю, общая идея понятна, хочу только отметить что префикс "q" обозначает команды с GUI интерфейсом, предоставляемые плагином QBzr.

      Извлечение проекта из хранилища

      Команда:
      bzr checkout bzr://server/project/trunk project
      или из контекстного меню проводника: 'Bazaar Checkout/Branch…'



      Как вы можете заметить, интерфейс диалога частично переведен, но используемая терминология может ввести в ступор начинающего пользователя, тем не менее, нам нужен пункт "Создать рабочую копию".

      Внесение изменений

      После внесения локальных изменений (непосредственно программирования) у нас есть два пути.

      Путь первый. Если ваши локальные изменения невелики, то вы можете их сразу отправить в хранилище, также как это делает Subversion. Для этого сначала обновляем нашу рабочую копию до последней ревизии находящейся в хранилище:
      bzr update
      Обратите внимание что слияние ваших изменений и новых ревизий из хранилища произойдет автоматически, без дополнительного bzr merge, что в большинстве случаев является оправданным при правильном распределении задач между разработчиками, иначе придется редактировать конфликты.

      И фиксируем наши изменения в хранилище:
      bzr qcommit
      Путь второй. Если же ваши изменения более значительны и разработка займет какое-то время, что обычно и бывает, то в процесс разработки добавляется новая команда фиксации промежуточных локальных изменений:
      bzr qcommit --local
      либо через контекстное меню 'Bazaar Commit…' и выбором пункта 'Локальная фиксация'



      Команда выполняется столько раз, сколько требует логика разработчика, обычно стараются делать одно функциональное изменение = одна фиксация, но это уже из области best practice.

      После окончания разработки и последней локальной фиксации, действуем по схеме 1:

      bzr update

      И вот тут происходит самое интересное, запустите:

      bzr qlog




      и вы увидите, что все локальные фиксации ответвились от основной линии, как будто вы вели разработку в отдельной ветке и теперь хотите ее объединить с основным деревом, статус pending merge что нам и нужно.

      Тестируем наши объединенные изменения и если все нормально фиксируем в хранилище:

      bzr qcommit

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

      Как отменить merge сделанное в результате bzr update

      Хочу предупредить, если после update у вас что-то пошло не так или вы просто передумали объединять ваши изменения, то не спешите использовать команду revert. Эта команда отменит неоконченное объединение и ваши изменения. Ваши локальные ревизии никуда не исчезнут, они останутся в хранилище истории локального дерева файлов. Но вы не вернетесь к своей локальной истории, а напротив останетесь с историей из основной ветки.

      Для возвращения к локальной истории вам необходимо узнать идентификатор последней ревизии в вашей локальной истории. Проще всего это сделать при помощи GUI команды qlog, но можно и воспользоваться командой heads из плагина bzrtools.

      В случае использования qlog выделите ревизию, помеченую ярлыком Pending Merge и затем в нижнем левом окне в первой строке с версией найдите подстроку вида revid:xxxx, в нашем примере это revid:_-20100111130959-gd9bfn7z2mxxixx3. Выделите ее мышкой и скопируйте в буфер обмена.


      Затем закройте qlog и выполните следующие команды:
      bzr revert
      bzr unbind
      bzr pull . --overwrite -r revid:_-20100111130959-gd9bfn7z2mxxixx3
      bzr bind
      Команде pull вы должны передать идентификатор ревизии локальной истории, тот самый, который мы скопировали из окна qlog.

      Идентификатор ревизии локальной истории можно также получить при помощи команды heads из плагина bzrtools. Для этого запустите следующую команду:
      bzr heads --dead-only
      В ответ она выведет информацию следующего вида:
      C:\work\bzr-day\Centralised\trunk>bzr heads --dead
      HEAD: revision-id: _-20100111130959-gd9bfn7z2mxxixx3 (dead)
        committer: Базарный день
        branch nick: trunk
        timestamp: Mon 2010-01-11 15:09:59 +0200
        message:
          локальная фиксация №2
      В строке "HEAD: revision-id:" показан нужный нам идентификатор. Опять же копируем его и запускаем те же действия:

      bzr revert
      bzr unbind
      bzr pull . --overwrite -r revid:_-20100111130959-gd9bfn7z2mxxixx3
      bzr bind

      Даже если вы сделали revert до того, как посмотрели идентификатор локальной ревизии через qlog — не паникуйте, а используйте второй способ с командой heads.
      Замечание редакции: если вы используете локальные фиксации, то перед выполнением команды bzr update убедитесь, что все ваши изменения зафиксированы командой commit, либо отложены "на полочку" командой shelve. Иначе вы их легко потеряете при выполнении команды revert. Однако, вместо локальных фиксацией всё-таки более безопасно использовать либо отдельную ветку либо отдельную рабочую копию.

      Заключение

      Итак, если вы до этого пользовались Subversion и хотите получить небольшой fun от использования системы контроля версий, то смело переходите на Bazaar. Если при этом вам захочется большего, я имею ввиду полный контроль над ветками, то Bazaar умеет и так работать, при этом не придется ломать уже налаженный стиль работы остальных. В общем Bazaar это настоящий швейцарский нож для разработчика с весьма дружественным интерфейсом.

      Работает на базе feedparser.

      Инструменты для разработки, тестирования кода, управления проектами. edit

      Все сообщества

      Python Стартапы Java Функциональное программирование Zend Framework Средства разработки Embedded Планетарий ДОУ Mobile Development За жисть Управление Adobe Flash Platform .ua-нет Фриланс сообщество HR/Recruitment Google AgileUkraine javascript php ALT.NET Україна Gamedev Linux SEO scientific/engineering Delphi Masters баян, надо удалить сообщ, как - не знаю SEORP Юзабилити Programming Сообщество WAP разработчиков Интеграция Интеллектуальный анализ данных DevRP TYPO3 Microsoft Silverlight emacs Си/Си++ Родотворие

      создать свое сообщество

      Статистика

      13 участников, создано 26.10.2009.

      Администраторы:

      Лента (2)

      Добавить

      интернет магазин бытовая техника магазин Laptoper