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

Новая стабильная версия Bazaar 2.1.0
bialix, 18.02.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 объявили, что предыдущая стабильная версия bzr 2.0 (текущий релиз по состоянию на февраль 2010 — это 2.0.4) будет поддерживаться и далее, но настоятельно рекомендуют переходить на 2.1. Серия 2.1 будет поддерживаться в течение года (как минимум), она же будет включена в дистрибутив Ubuntu Lucid.
Сморите также:
Использование плагина bzr-pipeline для "вечных" локальных правок
bialix, 18.02.2010...хочу поделиться bzr-специфичным решением одной практической ситуации, возникающей при групповой работе над проектом.Читать целиком: http://softwaremaniacs.org/blog/2010/02/18/local-patches-in-bzr-pipeline
Работая над общим кодом на локальной машине, иногда бывает нужно делать в нём строго локальные правки: пути к файлам, адреса серверов, отладочное логирование. При этом эти правки никогда не должны попадать в основной бранч проекта.
Часть из них можно и нужно вынести в отдельные локальные конфигурационные файлы, которые просто заигнорировать. Но вот с упомянутым отладочным логированием так не получится — это произвольный код, временно раскиданный по файлам. Ещё один пример такой правки — полное вырезание куска кода, который не критичен для работы, но не даёт проекту завестись с локальном окружении.
В bzr для этой проблемы мне известны два решения: одно прямое, другое — более удобное, с помощью плагина bzr-pipeline. Беда только в том, что в его документации описан несколько другой юзкейс, и я с первого раза вообще не понял, как оно мне поможет. Потом разобрался и решил восполнить пробел.
Список статей блога bzr-day
bialix, 07.02.2010Общие сведения
- Bazaar: зачем и почему
- Установка bzr
- Bazaar 2.0 и новый формат репозитория по умолчанию
- Модель "одна ветка = один каталог" в bzr
Концепции
Настройки
- Настройки bzr: whoami или как меня зовут
- Автоматический whoami при работе через SSH
- Пользовательские псевдонимы команд bzr (aliases)
Справка по bzr
- bzr help: встроенная справочная служба класса "люкс" (Часть 1, Часть 2)
- Встроенная справочная служба bzr: получение списка аргументов и опций для команды
Работа с bzr
- Исправление ошибок при работе с Bazaar
- Начинаем работу с bzr: базовый набор команд (Часть 1, Часть 2)
- Работа с ветками: push, pull, merge (Часть 1, Часть 2, Часть 3)
- Работа в централизованном стиле
Рецепты
- Как добавить каталог без содержащихся в нём файлов?
- Строгий контроль со стороны bzr
- Уборка мусора: команда bzr clean-tree (плагин bzrtools)
Дополнительно
Плагины
bzr-svn
QBzr
Блоги
Список обновлен: 2010/01/15
Работа с bzr в централизованном стиле
bialix, 25.01.2010Наш читатель и автор плагина bzr-externals Евгений Тарасенко рассказывает о работе с Bazaar в централизованном стиле (а-ля svn). Передаю ему слово.
Централизованный стиль
Итак, чем хорош централизованный стиль:
- во-первых, вся работа ведется в одной директории что очень актуально для многих IDE, которые забывают про мелкие настройки при переходе в другой каталог
- во-вторых, если вы используете С++ компилятор то количество дополнительных файлов просто съест ваше время и место на жестком диске при каждом новом построении, а при работе с ветками неизбежно придется компилировать и отлаживать сначала ветку, а после слияния и trunk
- ну и в-третьих, иногда бывает нужно зафиксировать небольшое изменение (одну ревизию) и тут у вас просто меньше лишних телодвижений в отличии от стилей с feature branch или с переключением веток.
Про TortoiseBzr
Базовый набор команд
checkout, co, qgetnew — извлечь рабочую копию
commit, ci, qcommit, qci — фиксировать изменения
update, up, qupdate, qup — обновить рабочую копию
Извлечение проекта из хранилища
Команда:bzr checkout bzr://server/project/trunk project
или из контекстного меню проводника: 'Bazaar Checkout/Branch…'
Внесение изменений
bzr update
И фиксируем наши изменения в хранилище:
bzr qcommit
bzr qcommit --local
bzr update
И вот тут происходит самое интересное, запустите:
bzr qlog
Тестируем наши объединенные изменения и если все нормально фиксируем в хранилище:
bzr qcommit
Как отменить merge сделанное в результате bzr update
Для возвращения к локальной истории вам необходимо узнать идентификатор последней ревизии в вашей локальной истории. Проще всего это сделать при помощи 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
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
bzr revert
bzr unbind
bzr pull . --overwrite -r revid:_-20100111130959-gd9bfn7z2mxxixx3
bzr bind
Замечание редакции: если вы используете локальные фиксации, то перед выполнением команды bzr update убедитесь, что все ваши изменения зафиксированы командой commit, либо отложены "на полочку" командой shelve. Иначе вы их легко потеряете при выполнении команды revert. Однако, вместо локальных фиксацией всё-таки более безопасно использовать либо отдельную ветку либо отдельную рабочую копию.
Заключение
Работает на базе feedparser.




