Bugzilla4Intranet
За время использования Bugzilla в Компании она обросла некоторым множеством доработок, после чего был создан проект Bugzilla4Intranet:
- Исходный код размещён в Google Code: http://code.google.com/p/bugzilla4intranet/
- Страница проекта: http://wiki.4intra.net/Bugzilla4Intranet
- Версия в основе текущей: Bugzilla 3.6.4
- Лицензия: MPL 1.1 (как и у оригинала Bugzilla), двойная MPL 1.1 / GPL 3+ (для переписанных частей кода)
Contents
Установка
Требует следующую толпу Perl-модулей (установить просто вызовом команды CPAN, она же perl -MCPAN -eshell):
cpan Date::Parse DBI CGI DateTime Email::Address \ Template JSON Email::MIME MIME::Parser Text::Diff \ Test::Taint Email::Reply XML::Twig Email::MIME::Attachment::Stripper \ Mail::RFC822::Address XML::Validator::Schema Email::Send Image::Magick \ Devel::StackTrace Text::TabularDisplay
Image::Magick обычно можно ставить как пакет вашего любимого Linux-дистрибутива, например perlmagick в Debian.
Опционально, но желательно:
cpan GD Template::Plugin::GD GD::Graph GD::Graph3d \ SOAP::Lite JSON::RPC JSON::XS Text::CSV \ Text::CSV_XS Spreadsheet::ParseExcel Spreadsheet::XLSX \ Lingua::Stem::Snowball Math::Random::Secure Net::IP::Match::XS
Улучшения оригинальной Bugzilla 3.0 по сравнению с 2.x
Bugzilla 3 имеет много преимуществ — авторы наконец-то осилили и mod_perl, и транзакции, и работу в UTF-8, и некоторые возможности расширения, и внешний вид посимпатичнее, и проверки дублирования изменений, и запросы через DBI (а не SendSQL()), и нормальные шаблоны для писем (если, конечно, Template Toolkit считать нормальным вообще).
В то же время, авторы Bugzilla начинают понимать, что возможности расширения в Bugzilla необходимы, и постепенно добавляют таковые. В 3.0 появляются Custom Fields (дополнительные поля у багов) и чуть-чуть хуков, в 3.2 появляется настраиваемый жизненный цикл бага, поддержка расширений авторизации и ещё чуть-чуть хуков. Правда, хуков там всё равно мало, и как пишут сами авторы, они не очень красивые и, вероятно, в будущем будут переделаны. Будущее — это 4.0, которая, скорее всего, вырастет когда-нибудь из HEAD’а, который обычно представляет собой unstable версию с нечётным индексом (3.1, 3.3, 3.5 и т.п). В 4.0 обещали хуки для всего, чего душе угодно, но пользоваться ими вряд ли кто-то будет, учитывая то, какой кошмар царит в головах авторов, судя по «новой системе расширений», добавленной в 3.6.
Производительность и надёжность (по сравнению с 2.x прогресс огромен):
- mod_perl вместо CGI — улучшает производительность. Правда, изначальные заверения о том, что «теперь багзилла будет летать», как оказалось,
нескольконе соответствуют действительности. Причина — тому, кто юзает Template::Toolkit, мод_перл — мёртвому припарка. Выигрыш в производительности от mod_perl с лихвой компенсируется усложнением TT-шных шаблонов. - InnoDB вместо MyISAM — ошибок «…table XXX is marked as crashed…» больше нет.
- транзакции вместо блокировок таблиц, а также внешние ключи (дождались!)
- полнотекстовый поиск по багам с морфологией вместо поиска по подстроке (которому, кстати, сопутствовали долгие блокировки при поисках)
- теперь вся багзилла работает в UTF-8 => отпадают все мыслимые проблемы с кодировками
- убрано множество кривых решений вроде файла data/nomail с логинами юзеров, которым не надо слать почту (теперь в настройках юзера админ может задать bugmail disabled), data/versioncache с перловым хешем мешающим обновлять словари (типа кэш какой-то) и т. п.
Новые фичи:
- Интерфейс! :) более красивый и сексуальный во всех аспектах.
- Можно добавлять аттачи и ставить флаги непосредственно при вводе нового бага.
- Нормальная защита от двойного сабмита любых форм.
- Дополнительные заголовки в письмах от Bugzilla.
- Email-управление багами.
- «Разделяемые» хранимые запросы поиска.
- Несколько более гибкая система прав (например, editbugs и canconfirm можно ставить на отдельные продукты).
Доработки 2.x → /dev/null
Следующие доработки были внесены нами давно в 2.x, и отмерли по той причине, что в 3.0 реализованы авторами:
- Настройка списка CC по умолчанию для каждого компонента.
- Исправление глючных прав выбора компонентов — Bug:19597 более неактуален.
- Настройка Milestone по умолчанию.
- Нормальная защита от двойного сабмита любых форм — то есть от дублирования багов и изменений.
- Видоизменена в Bugzilla 3.x работа с кодировками — появился UTF-8. Соответственно отмирают:
-
Страницы в cp1251 (HTML Content-Type). -
chart.cgi: Перекодировка названий из Param(defaultcharset) в utf8. -
report.cgi: Перекодировка названий строк и столбцов из Param(defaultcharset) в utf8. -
showdependencygraph.cgi: перекодировка краткого названия из Param(defaultcharset) в utf8. -
Bugzilla::DB::Mysql: обмен с базой в cp1251 (SET NAMES cp1251).
-
Легенда
Легенда к списку доработок, разбитому по статусу относительно Bugzilla 3.
- Ожидает проноса или решения о его ненужности,
- Пронесено,
-
Не требуется / похоронено.
По категории:
- F Доработки объектного ядра, кэширование, оптимизация [скрыть ]
- N Все новые фичи, кроме доработок поиска [скрыть ]
- S Доработки поиска, отчётов и групповых операций [скрыть ]
- U Доработки юзабилити [скрыть ]
- NU Новые фичи, связанные также с юзабилити [скрыть ]
- C Доработки, специфичные для практик использования Bugzilla внутри CustIS [скрыть ]
Под заголовком «доработки X.Y» понимаются доработки, внесённые уже после объединения CustIS Bugzilla с оригинальной версией.
Доработки 2.x → 3.2
Список доработок, существовавших в «CustIS Bugzilla» на момент объединения её с mainstream-версией 3.2.
Всем спасибо за прохождение опроса по часто используемым функциям Bugzilla.
Пронесены в Bugzilla 3.2:
- C Атрибут «Договор» — Bug:14378, договор по умолчанию у каждого продукта. Значения атрибута Договор (Bugzilla).
- F Возможность ограничения значений Custom Field не одним значением контролирующего поля, а несколькими — Bug:53617.
- C Раскрытие почтовых групп в CC — Bug:12253.
- U Content-disposition вложений — Bug:38801.
- N Страница добавления членов в группы — Bug:23445.
- N Добавление предыдущих Assignee и QA Contact в список CC к багу.
- N Текстовые вложения — Bug:15001, в том числе при постановке бага — Bug:53638.
- N Запись трудозатрат при создании Attachment-а — Bug:19052.
- N Напоминания о вводе трудозатрат и запросах флагов — Bug:17481.
- U Блокирование клонируемого бага клонированным, а не наоборот.
- N Возможность клонирования бага не только из описания, а также из любого комментария.
- N Разрешение создания багов в состояниях ASSIGNED и RESOLVED FIXED
и соответствующие пользовательские настройки(Bug:17976) - N Combo-box выбора человека, у которого спрашиваем про '?'-флаг — Bug:10837, Bug:57482.
- N «Silent» комментарии и вложения! — Bug:14372.
- C Пользовательская настройка 'Redirect me to my Bugzilla' — Bug:17975, в том числе влияние её на почту о флагах — Bug:66740.
- N Страница с настройками почты по умолчанию.
- C Страница «TodayWorktime» — Bug:13772.
- NU Предварительный просмотр комментариев — Bug:15119. В новом виде, прямо под полем ввода — отладка в баге Bug:53606.
- C Рассылка отчётов о трудозатратах по почте — Bug:15148.
- U Шрифт Arial в отчётах.
- U Индикаторы продукта, компонента и т. п. в письмах, в том числе в письмах о флагах! (prod: PROD.COMP) — Bug:15607.
-
Хранимая процедура LoadMyWorkTime() - U Не сбрасывать оставшееся время при закрытии багов,
- U show_bug.cgi:
- Показ % завершённых зависимостей бага — Bug:28333.
- Показ изначального QA contact.
- N report.cgi: возможность измерения не только количества багов, но и трудозатрат.
- U showdependencygraph.cgi:
- alt="ID: bugtitle" вместо alt="bug #bugid",
- U Более богатая раскраска багов по состояниям,
- S summarize_time.cgi: показывать только свои трудозатраты по багу — Bug:17977.
- N userprefs.cgi: показ и изменения списков наблюдения (своих и за собой) — Bug:19347.
-
Bugzilla::DB::Mysql: убрано CAST() AS BINARY для INSTR() для MySQL>=4, -
template/en/default/attachment/show-multiple.html.tmpl: убран iframe, - N Комментарии о клонированных багах в клонируемых багах.
- U Отображение ссылок на баги в комментах и списках зависимых багов с разными стилями в зависимости от состояния, включая номера багов в списках и почтовые сообщения — Bug:53833!
- просто номер для багов в статусе UNCONFIRMED, NEW, ASSIGNED, REOPENED
- зачеркнутый номер для багов в статусе RESOLVED
- зачеркнутый номер с пунктирной рамочкой для багов VERIFIED
- зачеркнутый номер со сплошной рамочкой для CLOSED
- NU Поля Hours Worked и Status Whiteboard в форме создания бага.
- U Ссылки на комментарии, соответствующие установке флага, на флагах.
- S Поддержка
%user%
при поиске по Boolean Charts:- Отправлено в Mozilla Bug 41651.
- F Версия по умолчанию для каждого компонента. Плюс исправление кривости CGI::cookie(), ведущей к несохранению версии из формы.
-
Интеграция с SharePoint, - C Интеграция с ViewVC,
- N Интеграция с MediaWiki — Bug:13593.
- Плюс, новые Wiki добавлять теперь легко, ссылки можно писать в вики-стиле: wiki:[[Ссылка с пробелами и "любой мутью"]]
- Плюс из вики-ссылок удаляются маркеры цитирования и переводы строк — Bug:68347.
Доработки 3.2
- F Фиксы производительности — в частности см. Не используйте Template Toolkit!
- F Доработки mod_perl.pl для виндов, и для никсов тоже — убран Apache2::SizeLimit.
- C Защита багов от рассылки изменений (в любой роли — CC, Assignee, Reporter, QA) определённым юзерам (по группам) — Bug:38616.
- U Автоматическое проставление Assignee=ТЫ при выборе статуса ASSIGNED и проставление QA=ТЫ при выборе VERIFIED, но не при выборе CLOSED мимо VERIFIED — Bug:53754.
- N Управление багами по почте, фильтры для удаления аутлукового говна из писем-ответов, поддержка вложений в почте, поддержка HTML входящих писем, поддержка почтовых алиасов пользователей, скрипт загрузки алиасов из LDAP, поддержка полей по умолчанию для спецадресов типа helpdesk-smth — Bug:47074, Bug:53608.
- N Интерфейс отписки от уведомлений по багу (то есть из CC) одним кликом по ссылке из письма (no more spam!) — Bug:46701.
- S RSS-лента комментариев к багам — Bug:16210, а также и активности по багам, оптимизация — Bug:53687.
- U Разделитель как "." так и "," при вводе времени.
-
«Стрелочки» рядом с заголовками в таблице списка багов, показывающие порядок сортировки.
Взято из Mozilla Bug 164009. - U Если severity CRITICAL или BLOCKER, то письмо приходит с красной строчкой сверху, в теме письма [CRITICAL] или [BLOCKER] после номера бага, а важность письма — Высокая и приоритет — 1.
- S По клику Show bug ID list показ списка ID багов через пробел на странице поиска.
- U Подсветка красным цветом поля ввода времени в случае ввода некорректного значения, и ловля NaN — изменения закоммитит, но без времени.
- N Массовый Excel-импорт багов — Bug:42133. Справка: Bugzilla#Импорт багов из Excel-листов.
- S Поддержка русской морфологии в полнотекстовом поиске MySQL — Bug:46221.
- C Ссылки на сотрудников в Plantime вместо mailto: (префикс настраивается) — Bug:46053.
Доработки 3.4
Bugzilla 3.4 установлена в качестве боевой 30 августа 2009. Всем спасибо за боевое «гамма-тестирование» (потому, что даже не совсем бета). :)
- N Возможность создания багов в состоянии RESOLVED и выбора Resolution при этом — Bug:53758.
- N Показ списков CC а-ля Mozilla Bugzilla — сначала в div’е со скроллером, и из него можно скопировать в буфер, а по нажатию edit — multiple selection box — Bug:54165.
- U Сохранение порядка сортировки при редактировании запроса — Bug:54380.
- U Стили ссылок и подсказок в графах и деревьях — Bug:54382.
- N Редактируемость Default CC — Bug:55095.
- U Радиобатон для выбора файл/текст вложение — Bug:53850.
- N Текстовые вложения при постановке бага — Bug:53638.
- F Фикс для кривого Encode::MIME::Header — см. Bug:53764. Актуально при использовании Exchange.
- U Выбор положения «подвала» с сохранёнными запросами — сверху, снизу или и там, и там — Bug:53697.
- N Copy-paste для tab-separated таблиц с отрисовкой в ASCII. Bug:55876
- U Изменён метод формирования списка CC при клонировании бага. Bug:55966.
- U Submit anyway, как заявлено, только my changes, а не значения всех полей со старой формы. Bug:56327.
- U «Умные» поля Version, Component и Target Milestone в групповом редактировании багов. То есть на выбор предоставляется
пересечение(твою мать, тоже мне «умные» — это были тупые, «умные» — это объединение) множеств доступных значений для всех выбранных продуктов. Bug:56536. - F Принудительная перезагрузка формы редактирования бага в Firefox при нажатии Reload. Баг стоит на фаерфокс на багзилле мозиллы, но это один из багов, о котором «nobody cares», тянется он уже 8 лет, кажется. Bug:57315.
- U Ввод рабочего времени в формате ЧЧ:ММ. Bug:58021.
- S Полностью переделанное построение графов зависимостей — баги разбиваются на кластеры и отрисовываются в svg+png. Bug:53609.
- U Фокус на поле «quick search» на Bugzilla Main Page. Bug:58301.
- F Красивые страницы ошибок, с красной рамочкой и даже с котёнком и пожарной машиной в случае, если ошибка в коде. В том числе правильная ловля ошибок компиляции, в том числе правильная обработка ошибок в вебсервисах. Bug:58633.
- N Настройка на уровне продукта, включающая предупреждения в случае, если в баг этого продукта СПИСЫВАЕТСЯ время. То есть «предпочитать не списывать время сюда». Bug:59357. Bug:59357.
- F Детализация сообщений об ошибках неправильно выбранных полей. Bug:61456.
- S Колонки «Blocked» и «Depends on» в поиске. Bug:61979.
- C Поддержка ShowTeamWork в RSS-лентах. (бага нет)
- U Стили описания запроса поиска. Bug:62248.
- F Ликвидация дублирования багов при неудачном создании attachment’а (завернули в транзакцию). Bug:63152.
- S Колонки «Flags» и «Requests» в поиске. Bug:62964.
- F Разрешение правки значений Custom полей не только admin’ам, а группе editfields. Bug:63441.
- NU Сильно переделан быстрый поиск, в сторону большей интуитивности синтаксиса (он был безумный, и код тоже). Bug:63855 и не только.
- N Отправка почты в формате HTML+plaintext (multipart/alternative), а не только plaintext, в том числе и о флагах. Кроме того, переделаны проверки безопасности, так что теперь письма приходят, но ровно с тем количеством информации, которое необходимо. Bug:53624, Bug:53647, Bug:64616.
Доработки 3.6
Bugzilla 3.6 установлена в качестве боевой 10 июня 2010.
- U Submit формы бага по Ctrl-Enter. Bug:64559, Bug:65729.
- F Selenium-тесты для Bugzilla и просто автотесты для вебсервисов. Bug:64428.
- U Javascript-сортировка списка багов на стороне клиента (украдено из https://bugzilla.mozilla.org/).
- NU Предлагать вариант пользователя при опечатке (на основании расстояния Левенштейна) при доступности хранимой процедуры LEVENSHTEIN. Bug:64855.
- F При внесении изменений или постановке багов, теперь происходит перенаправление на страницу бага, а не показ страницы бага самим process_bug.cgi. Эффективно это означает, что после изменений теперь всегда можно обновлять страницу (F5), и повторно изменения отправляться не будут — Bug:64562.
- F Полностью выкинута «новая система расширений», внесённая в 3.6, и добавлена своя. Ибо она была совершенно ужасна, хотя и выросла из относительно разумной идеи. Это не говоря о несовместимости со старым, проверенным, хотя и не очень красивым методом. Своя — совместима и сделана на основе «best practices», взятых из MediaWiki. Честно — когда я это увидел, оно меня убило — я не знал даже, что так в Perl’е вообще можно делать. И лучше бы не узнавал. Описано в Bug:40933 в районе объединения с 3.6.
- U Угадывание кодировки текстовых вложений и показ юникодных с правильной — Bug:65730.
- S Отчёты — возможность измерения не только количества багов, но и трудозатрат, в том числе затраченного времени — Bug:65839.
- U Фокус на поле выбора юзеров / кнопке Confirm на странице подтверждения выбора пользователей. Bug:65880.
- C Раскрытие «групповых пользователей» при установке на них флага (ставится много флагов на подписанных). Bug:66094.
- U Добавление ссылки на аттачмент при клонировании бага из коммента с аттачментом. Bug:66177.
- U Добавление пустых значений в отчёты (таблицы/графики), регистронезависимость группировки в отчётах, рефакторинг группировки. Bug:66350.
- C Системная настройка снятия флагов при закрытии бага. Bug:68430.
- U Сортировка пользовательских настроек по алфавиту.
- N Массовое обновление багов из Excel. Bug:68621.
- C Форма для фиксации трудозатрат задним числом и от чужого имена, и распределения часов. Права на эту форму — группа worktimeadmin. Bug:68921, Bug 68921.
- N Настройка компонентов «Open for bug entry», по аналогии с закрытием продуктов. Bug:68921.
- C Связь продуктов — внешний ← внутренний. Bug:68921.
- F Блокировка строки бага (SELECT FOR UPDATE) при обновлении. Bug:69012.
- NU Пользовательская настройка кодировки и разделителя для экспорта и импорта CSV. Bug:69766.
- F Возможность превращения Bugzilla-поисков во вьюшки БД с доступом извне. Bug:61728.
- F Настройка копирования/некопирования значения кастом поля при клонировании бага. Bug:69325.
- F Численный тип кастом полей. Bug:55655.
- F Добавление селект-полей в фильтры поиска + рефакторинг зависимостей полей/значений. Bug:69481.
- N Проверки корректности изменений багов. Bug:68921, Bug:61225, Bug:65361, Bugzilla: проверки изменений багов.
- NU Пользовательская настройка влияния Silent на почту о флагах. Bug:72510.
- U Письма о флагах теперь приходят со ссылкой сразу на правильный коммент бага. Bug:71288.
- F Корректная валидация значений полей при обновлении багов:
- Не требовать прав на баг, связанный полем Bug ID, при обновлении доступного бага. Bug:72149.
- Общий механизм проверки значений зависимых полей в зависимости от значений контролирующих полей, интегрированный с бывшей формой «Verify New Product Details». Bug:61456.
- Очищать значения полей, не показываемых после изменений других полей. Bug:63249.
- S Колонка «Первый коммент» в поиске. Bug:71955.
- F Несколько функций API для работы со значениями полей. Плюс новый вид RPC — принимает запросы по REST, отвечает простым видом XML, причём все ошибки отлавливаются и включаются в ответ. Bug:70168, API_багзиллы_для_внешних_систем.
- F Лимит 255 символов на значения строковых Custom полей. Сделано ранее, всплывало в Bug:72711.
- S Печать SCRUM-карточек из списка багов. Bug:45485.
- C Автоматическое проставление значений поля «внешний баг» при клонировании багов во внешние/внутренние продукты и кнопочки клонирования. Bug:63249, Bug:69514.
- S Использование PostgreSQL’евского полнотекстового поиска, сортировка по релевантности при быстром поиске. Исправления всех доработок для совместимости с PostgreSQL. Bug:72826, Bug:72816.
- F Опция для добавления полей типа Bug ID в зависимости бага. Bug:73054.
- U Строка быстрого поиска увеличена до 300px. Bug:73354.
- F В отладочных целях: поддержка корректной перезагрузки всех Perl-модулей при работе под mod_perl. Для активации нужно добавить в конфигурацию Apache перед PerlConfigRequire .../mod_perl.pl:
- <perl>$Bugzilla::RELOAD_MODULES = 1; $^P |= 0x10;</perl>
- F Оптимизация прав доступа к разделу администрирования: группа admin_index.
- F Кэширование JSON-кодированных данных зависимостей значений полей друг от друга для формы поиска и формы бага на стороне клиента с корректным сбросом кэша. Bug:70605.
- F Кэширование метаданных — объектов полей Bugzilla::Field со всеми сопутствующими и набора полей для поиска в памяти между запросами. Bug:70605.
- N Расширение для вставки ограниченных правами списков багов в MediaWiki. Bug:71261
- C Ссылка клонирования во внешний/внутренний продукт. Bug:69514
- C Настройка на уровне продукта, рекомендующая не списывать в него время. Bug:59357
- NU Массовая загрузка вложений прямо с формы редактирования бага. Bug:68919
Внешние баги
- Bug:12122: Mozilla Bug 302778 — When using IE, all negative event checkboxes are missing from email preferences page
- Bug:16361: Mozilla Bug 477264 — Server error 'Foreign key constraint fails…' when adding any attribute into an environment
- Bug:38801: Mozilla Bug 501639 — Firefox suggests «attachment.cgi» instead of real attachment filename when downloading (due to content-disposition)
- Bug:40933: Mozilla Bug 446598 — provide useful change information in an rss/atom feed of recent changes
- Bug:40933: Mozilla Bug 65477 — Allow different styles of bugmail by user preference (HTML, XML, etc.)
- Bug:46262: Mozilla Bug 486666 — Russian translation for Testopia documentation
- Bug:47074: Mozilla Bug 381912 — [email_in] Add the ability to add attachments by email
- Bug:53836: Mozilla Bug 41651 — Relative advanced queries
- Bug:53848: Mozilla Bug 164009 — Show which columns are being sorted on, in buglist.cgi, and what direction the sort is
- Bug:54380: Mozilla Bug 516956 — Sort order is cleared into «Reuse same sort as the last time» on query edit
- Bug:54468: Mozilla Bug 517265 — «A comment» (longdesc) in advanced search is resetted after clicking «Edit Search»
- Bug:53629: Mozilla Bug 518397 — Bugzilla::Util::get_text implementation leads to performance issues on long bugs, Mozilla Bug 518398 — Why Bugzilla doesn’t use Template::Stash::XS?
- Bug:53697: Mozilla Bug 527976 — Ability to select position of useful-links and common-links (page header, page footer or both)
- Bug:55790: Mozilla Bug 531855 — Show product/component in page title