Архив рубрики: Redmine

Кросспроектное связывание коммитов с задачами в Редмайне

Багтрекер Redmine не позволяет связать задачу с фиксацией изменений в системе контроля версий^W^W^W^W^W^W коммитом, относящимся к части хранилища, не связанной с проектом, куда входит задача — ни автоматически, указывая номер задачи в комментарии к коммиту, ни вручную, на странице коммита. Однако при наличии связи в базе данных Редмайн всё же отобразит ссылки на страницах и задач, и коммитов.

Связи хранятся в таблице changesets_issue

changeset_id issue_id
24645 2224

Сопоставить номер связи с номером ревизии можно через таблицу changesets

id repository_id revision committer
24645 37 8801 as

Таблицы в MySQL Workbench

Для создания связи достаточно внести запись в таблицу changesets_issue, подставив в поле changeset_id правильное значение changesets.id — ссылки появятся при ближайшем посещении страниц. Привязать редмайновую задачу с указанным номером ко всем коммитам, в комментариях к которым есть этот номер, можно запросом


SET @issue_id = 1234;
    
INSERT IGNORE INTO changesets_issues
SELECT 
    id, @issue_id
FROM
    changesets
WHERE
    comments REGEXP CONCAT('.*#', @issue_id, '[^0-9].*');

Как перенести комментарий в другую задачу в редмайне

Система управления проектами (и заодно багтрекер) под названием Redmine в штатной комплектации не умеет переносить комментарии из одной задачи в другую. Во всяком случае, в той версии, что установлена у нас. Редмайн позволяет отредактировать текст комментария, процитировать его, написав новый комментарий или удалить его совсем.

Комментарий в Редмайне

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

Комментарии хранятся в таблице journals, номера задач — в поле journalized_id. Присоединённые файлы — в таблице attachments, номера задач — в поле container_id. Поменял значения — комментарий переехал.

Рельсы мимо шахты

Пробую запустить тестовую копию свежего Редмайна:

$ bundle exec rails server
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-09-28 13:45:09] INFO  WEBrick 1.3.1
[2016-09-28 13:45:09] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-09-28 13:45:09] INFO  WEBrick::HTTPServer#start: pid=8196 port=3000

Ну да, запускается, но входящих соединений не видит. Если запускать командой bin/rails server — аналогично.

Оказалось, что сервер, слушая по умолчанию соединения с локалхостом, игнорирует те, где указано любое другое имя. Если его указать — всё получается.

bundle exec rails server -b your.host.ru

Запущен отладочный сервер Redmine