Bugzilla4Intranet

From Wiki4Intranet
Revision as of 18:27, 5 December 2012 by VitaliyFilippov (Talk | contribs)

Jump to: navigation, search

За время использования 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+ (для переписанных частей кода)
  • Список доработок актуален на дату: 2012-12-05 (5 декабря 2012).

Установка

Требует следующую толпу 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.

  • Ожидает проноса или решения о его ненужности,
  • Пронесено,
  • Не требуется / похоронено.

По категории:

Под заголовком «доработки 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.
  •  NU  Автодополнение пользователей в большинстве мест, в том числе во флагах, с мультивыбором. Реализация отличается от реализации в Bugzilla 4.x Bug:91840
  •  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!
    1. просто номер для багов в статусе UNCONFIRMED, NEW, ASSIGNED, REOPENED
    2. зачеркнутый номер для багов в статусе RESOLVED
    3. зачеркнутый номер с пунктирной рамочкой для багов VERIFIED
    4. зачеркнутый номер со сплошной рамочкой для 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.
  •  S    F   Практически одна из ГЛАВНЫХ фич Bugzilla4Intranet — полностью переделанный движок поиска, оптимизированный настолько, что Full-Scan’ов таблиц не происходит практически никогда, в том числе и при использовании сложных поисковых выражений. Честно — как без этого живёт и до сих пор не сдохла багзиллы Мозиллы (http://bugzilla.mozilla.org/) — нам неизвестно. Bug:70605
  •  F   Полностью выкошена библиотека YAHOO UI. Bug:70605
  •  N   Расширение для вставки ограниченных правами списков багов в MediaWiki. Bug:71261
  •  C   Ссылка клонирования во внешний/внутренний продукт. Bug:69514
  •  C   Настройка на уровне продукта, рекомендующая не списывать в него время. Bug:59357
  •  NU  Массовая загрузка вложений прямо с формы редактирования бага. Bug:68919
  •  N   Настройка unauth_bug_details, разрешающая показывать, в каком продукте находится недоступный баг. Bug:67778
  •  N   Шаблон «SimpleTable» для вставки списков багов в другие страницы посредством iframe, с поддержкой масштабирования этого iframe с помощью HTML5 postMessage кроссдоменной коммуникации, плюс Wiki-шаблон для удобства эксплуатации данной доработки. Bug:70302
  •  C   Зависимость внутренних багов второго уровня от внешних багов. Bug:75690
  •  U   Tab-index-ы на форме постановки бага. Bug:86003
  •  S   Колонка «Duplicate of» в поиске. Bug:86642
  •  NU  Загрузка скриншотов через SUPA. Bug:87188
  •  C   Worktime-Only комментарии, схлопываемые по умолчанию. Bug:87696
  •  S   Колонка «Дата последнего комментария» в поиске. Bug:91323
  •  S   Колонка «Последний комментарий» в поиске. Bug:98364
  •  N   Возможность автоматической подписки на баги, удовлетворяющие заданным условиям поиска. Bug:101207
  •  NU  Продукт, Reporter, QA и Assignee в результатах поиска показываются ссылками на списки соответствующих открытых багов. Bug:102435
  •  NU  Полностью новая форма настроек доступа к продукту, вместо стандартного УЖОСА. Bug:102958
  •  S   Колонка «Продукт внешнего бага» в поиске. Bug:111527

Внешние баги