Организация рабочего потока: Phpstorm, Redmine, Changelists

Сегодня я покажу как у меня получается сделать работу удобной с использованием Phpstorm, Redmine, Teamcity.

  • Есть задача в redmine.
  • Я начинаю её выполнять.
  • Всё проверяю локально и коммичу в репозиторий.
  • Выливаю изменения на тестовый сервер.

Есть несколько ньюансов. Бывают задачи очень объёмные и/или не очень срочные, которые я делаю в перерывах между задачами с более высокими приоритетами. Или спокойно делаю задачу, но прибегает менеджер с огромными глазами и криками, что сайт выдаёт ошибку, и нужно сделать быстрый hotfix.

В этом случае очень помогают changelist в PhpStorm.

Смысл changelist’а заключается в логическом разделении группы файлов для коммита. Т.е. файлы “прикрепляются” к определённому changelist’у. И при коммите мы выбираем нужный changelist и коммитим только файлы из этого changelist’а. Changelist есть всегда, по-умолчанию название default.

Настраиваем Redmine:

Нужно включить в параметрах redmine пункт Enable REST web service

phpstorm-changelist

Добавляем новый Task server в PhpStorm. Api token можно найти в личном разделе в redmine.

phpstorm-changelist

И добавляем парсинг номера задачи из описания коммита для отображения её как ссылки на задачу в redmine.

Project Settings → Version Control → Issue Navigation

Вводим паттерн регулярного выражения #(\d+) и генерируемую ссылку: http://redmine.company.com/issues/$1

phpstorm-changelist

Теперь открываем задачу Tools → Task → Open. Тут работает автодополнение для имени задачи.

Если были открытые файлы, то они все скроются. Сейчас мы работаем в своём наборе открытых файлов. Если откроем changelist под названием default, то все открытые файлы вернуться в редактор. Нужно понимать, что изменения в скрытых файлах остаются (это вам не git stash), а просто скрываются из вида.

Мы можем создать множество changelist’ов. Они не обязательно создаются из задачи, можно создать свой changelist. Я, например, создаю changelist NO для временных файлов, файлов своих настроек, декларативные скрипты для работы автодополнения, которые мне не нужно включать в коммит.

Теперь при коммите будут выбраны только файлы, которые находяться в выбранном changelist’е.

Откройте в разделе changes (alt+9 или ⌘+9) вкладку Local. Тут показаны изменённые файлы, сгруппированные по changelist’ам. Здесь файлы можно перемещать между changelist’ами.

phpstorm-changelist

Кликнув правой кнопкой по changelist, вы можете изменить его комментарий. Этот комментарий потом автоматически вставиться в описание коммита.

Для запуска сборки проекта в TeamCity из PhpStorm нужно поставить соответсвующий плагин.

Получилась вот такая схема работы. Ребята из JetBrains очень крутые: развивают продукт очень стремительно, вводять очень удобные фишки. Кто ещё не пробывал PhpStorm - обязательно попробуйте. А на него перешёл с Netbeans и нисколько не жалею.