Bugzilla4Intranet

From Wiki4Intranet
Revision as of 16:59, 10 July 2014 by VitaliyFilippov (Talk | contribs)

Jump to: navigation, search

Bugzilla4Intranet — форк баг-трекера Bugzilla (версии 3.6.4), ставящий своей конечной целью превращение Bugzilla в настраиваемый трекер, а также оптимизацию производительности и ликвидацию некачественного кода, присутствующего в оригинале в большом количестве.

Идеальная цель проекта:

  • Полностью настраиваемая объектная модель, редактируемая из интерфейса. Функционирование всех объектов системы на её основе, возможность добавлять свои объекты, возможность поиска любых объектов, автоматическое версионирование всех изменений, отсутствие (полное или практически полное) жёстких завязок на конкретные поля или сущности.
  • Полная ликвидация CGI.pm.
  • Минимум сложной программной логики в шаблонах. Шаблоны — это представление, а не контроллер!
  • Выделенный отдельно уровень локализации, не требующий для перевода на другой язык переписывать шаблоны.

Состояние проекта

Bugzilla4Intranet — форк версии 3.6.4. Это не самая новая версия Bugzilla. Что это означает на данный момент:

  • Пока что не поддерживается обновление с новых версий Bugzilla до Bugzilla4Intranet. UPDATE: Уже поддерживается (в ветке 'wip'), схема БД совместима. Какие-то мелкие баги всё ещё возможны, но в целом, как минимум на MySQL, всё должно работать.
  • Часть возможностей, присутствующих в свежем оригинале, может отсутствовать в нашей версии, например:
    • Отсутствует «новая версия» формы поиска — нет группировки полей в fieldset’ы, по-другому выглядит добавление произвольных операторов.
    • Отсутствуют Уже присутствуют сохраняемые отчёты.
    • Отсутствуют (и, возможно, добавлены так и не будут — фича странная и даже, возможно, вредная) «пользовательские теги» на багах, то есть теги, которые видят только пользователи, их создавшие.
    • Отсутствует поддержка SQLite.
    • Последний просматриваемый список багов всё ещё сохраняется в cookie, а не в БД.
    • Возможно, какие-то прочие фичи, в основном — мелкие.

Зато — добавлено множество новых возможностей! Из крупных доработок можно отметить:

  • Excel-импорт.
  • Улучшения работы с вложениями:
    • Добавление нескольких вложений к багу разом;
    • Возможность при добавлении вложения вставить текст или изображение прямо из буфера обмена;
    • Возможность скачать все вложения к багу в одном ZIP-архиве;
    • Базовый онлайн-просмотр офисных документов с помощью LibreOffice;
    • Показ приложенных изображений прямо внутри комментариев.
  • Улучшения Custom-полей и более мощные зависимости между полями:
    • Новые типы;
    • Доступность «обратных к полю типа BUG_ID отношений» в поиске и Excel-импорте;
    • Возможность делать custom поля зависимыми друг от друга;
    • Возможность не только показывать одно custom поле для нескольких значений контролирующего поля, а также и показывать одно и то же значение select-поля для нескольких значений контролирующего поля;
    • Возможность разрешить/запретить пустое значение (NULL, то есть, «---» для select-полей, просто пустое для прочих) в зависимости от значений другого поля (например, попродуктно);
    • Возможность включить/выключить копирование поля при клонировании багов, в том числе — в зависимости от значений другого поля (например, попродуктно);
    • Настройки значений по умолчанию для любых полей — как глобальных, так и зависимых от значений другого поля;
    • Все вышеперечисленные поля зависимостей могут быть разными. То есть NULL можно включать/выключать в зависимости от одного поля, значение по умолчанию — в зависимости от другого поля, клонирование — от третьего и т. п.
    • Более аккуратная форма редактирования полей;
    • Новые интерфейсы редактирования наборов значений для каждого контролирующего значения (то есть, опять-таки — например, попродуктно);
    • Аналогично 4.x можно деактивировать старые версии, milestone’ы, компоненты.
  • «Проверки корректности» изменений багов, то есть — настраиваемые предупреждения / ошибки.
  • Представление сохранённых поисков в виде MySQL’ных View, позволяющих запрашивать информацию внешними инструментами и с учётом прав доступа.
  • Страницы массовой фиксации трудозатрат.
  • Различные новые поля в поиске, в том числе — поля связанных багов.
  • Возможность правки комментариев, Diff’ы в истории изменений и письмах.
  • Возможность отключения полей «Platform» и «Operating system».
  • Улучшения интерфейсов настройки прав доступа, несколько облегчающие работу с оными в Bugzilla (модель разграничения доступа в Bugzilla весьма неочевидная):
    • Редизайн формы настроек доступа к продукту.
    • Новый интерфейс редактирования групп, отображающий полный список пользователей, так или иначе входящих в группу и/или имеющих права включения других пользователей в эту группу. То есть, для редактирования можно «заходить» со стороны группы, а не со стороны каждого входящего в неё пользователя.
  • Улучшения ответа на баги через почту — возможность поставить несколько вложений, адекватная диагностика при ошибках, фильтрация автоматических ответов (чтобы, например, не получалось бесконечного цикла отправки комментариев при установке пользователем ответа типа «я в отпуске до XX.XX»).
  • Новый «REST-JSON»/«REST-XML» API, принимающий входные параметры как обычные параметры POST или строки запроса, отвечающий JSON или XML, способный перехватывать любые ошибки и передавать их в ответе в виде имён (а не ужасных прибитых гвоздями численных кодов).

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

  • Полностью переписан код, отвечающий за поиск. Даже сложные запросы поиска строятся так, что СУБД может максимизировать использование индексов и выполнять их оптимально.
  • Приведена в норму структура базы данных — теперь все целочисленные первичные ключи имеют одинаковый тип INT, а не разные SMALLINT/MEDIUMINT/INT, а все select-поля хранят ID значений вместо самих значений, и NULL вместо строкового «---», используемого как NULL в оригинале (а также вместо версии «unspecified»); кроме того, практически всем VARCHAR колонкам проставлен максимальный лимит длины (255), чтобы не заниматься крохоборством и не увеличивать максимальную длину сначала до 20, потом до 64, потом до 128… VARCHAR, как следует из названия, имеет переменную длину и «лишнего» места не занимает.
  • Полностью переписана логика сохранения багов в БД — теперь код работает корректнее и эффективнее.
  • Ликвидирован hard-code возможных значений для поля «See Also». В оригинале 3.6 данное поле может содержать только URL определённого вида, соответствующего жёстко заданным в коде (!!!) шаблонам для разных баг-трекеров. В оригинале 4.4 авторы решили это отрефакторить и… что бы вы думали? Оставили завязку в коде, но вынесли каждый шаблон в отдельный класс! Зачем так сделано — загадка, нормальное решение — простой настраиваемый набор регулярных выражений в параметрах.
  • Ликвидирован (по меньшей мере, почти) hard-code названий статусов (теперь их можно, например, назвать русскими именами).
  • Из шаблонов вынесены некоторые крупные куски программной логики, а также объёмные JavaScript’ы.
  • Из шаблонов вынесена некоторая часть сообщений локализации (описания полей, «термины»); убраны сверхдлинные IF..ELSEIF’ы, которыми выбирались сообщения об ошибках.
  • Реализовано клиентское кэширование зависимостей между значениями полей, что даёт браузеру возможность быстрее открывать формы редактирования и поиска багов.
  • Реализовано серверное кэширование метаданных между запросами.
  • Добавлена поддержка полнотекстового поиска Sphinx, который работает гораздо быстрее и качественнее, чем MySQL FULLTEXT.
  • Добавлена простая реализация standalone HTTP-сервера на основе HTTP::Server::Simple, в духе Plack; добавлены init-скрипты для запуска данного сервера и демона очереди заданий. Рекомендуется использовать HTTP::Server::Simple + nginx в качестве фронтенда к нему вместо работы под mod_perl, так как mod_perl создаёт большое количество различных проблем, в том числе мистических багов, не проявляющих себя в «голом» Perl’е.
  • Добавлена возможность корректной перезагрузки всех модулей и расширений на каждом запросе, что сильно упрощает отладку и разработку — больше не нужно после внесения каждого изменения перезапускать сервер.
  • Полностью переписана система расширений, новая создана по образу и подобию MediaWiki и позволяет перезагружать на каждом запросе в том числе и код расширений.
  • По умолчанию вложения вообще не хранятся внутри БД (BLOB’ы — mauvais ton), хотя возможность хранения оставлена для совместимости с оригиналом.
  • Задолго до попытки реализации аналогичной фичи в оригинале, ещё в 2010 году, добавлен Redirect после сохранения изменений в баг, не дающий вам случайно перепослать POST запрос при нажатии F5. Кроме того, в оригинальной Bugzilla это не работает в Internet Explorer, а у нас — работает везде.
  • HTML-формат почты также появился задолго до его реализации в оригинальной Bugzilla.
  • Полностью изгнан YAHOO UI — почти что худший из всех JS-фреймворков. Не говоря уже о том, что JS-фреймворк в Bugzilla не нужен вообще.
  • Как и в оригинале, реализована подсказка имён пользователей; правда, в связи с изгнанием YAHOO UI реализована она на других технологиях.
  • Начато изгнание CGI.pm — часть скриптов уже использует простой доступ к значениям в хеше вместо вызова $cgi->param.

Установка

Требует следующую толпу 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 Image::Magick \
  Devel::StackTrace Text::TabularDisplay Email::Sender::Simple \
  Lingua::Translit

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 TheSchwartz\
  Daemon::Generic HTTP::Server::Simple Net::Server IO::SendFile HTML::Strip

После установки данных модулей создайте MySQL-базу данных и пользователя, имеющего к ней полный доступ, запустите ./checksetup.sh в директории установки Bugzilla и следуйте инструкциям.

При обновлении — просто обновите код и также запустите ./checksetup.sh. Нужные изменения в БД будут внесены автоматически.

История улучшений

Список доработок актуален на дату: 2012-12-05 (5 декабря 2012).

Улучшения оригинальной 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   Разделитель как «.» так и ", " при вводе времени.
  •  S   «Стрелочки» рядом с заголовками в таблице списка багов, показывающие порядок сортировки.
    Взято из 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
  •  N   Back-port веб-сервисов из Bugzilla 4.0.1. Bug:84586.

Внешние баги