Связь кода и задач

Info

Объедините задачи и разработку. Прикрепите ветки и запросы на слияние к задаче как вручную или автоматически.

Ручное прикрепление веток и запросов на слияние к задачам

  1. Создайте новую задачу, в рамках которой будет разработана фича.

  2. Перейдите в раздел репозитория Код, создайте новую ветку для разработки фичи, внесите в нее изменения. Далее создайте из данной ветки запрос на слияние.

  3. Связать уже существующую задачу и запрос на слияние можно двумя способами:

    • на странице Задачи в блоке Разработка выберите созданный ранее запрос(-ы) на слияние и привяжите его к задаче. При этом автоматически привяжется и соответствующая ветка;
    • на странице Запроса на слияние в блоке Задачи выберите созданную ранее задачу(-и) и привяжите ее к запросу. Привязать задачу к запросу можно в процессе создания запроса или после создания.

Note

После прикрепления задачи к запросу на слияние эта связь отображается как на странице Задачи, так и на странице Запроса.

Автоматическое прикрепление веток и запросов на слияние к задачам

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

В настройках репозитория, в котором хранятся задачи, в разделе настроек Задачи включите одну или несколько функциональностей:

  • автоприкрепление по названию ветки;
  • автоприкрепление по названию запроса на слияние;
  • автоприкрепление по сообщению коммита (см. раздел ниже).

Все функциональности выключены по умолчанию, чекбоксы можно проставлять одновременно. Включать и отключать их могут владелец репозитория и администраторы.

Правила автоприкрепления

  • номер задачи указывается с обязательной решеткой (#) и ищется в любой части имени ветки, имени запроса на слияние или сообщения/описания коммита;
  • если задачи и код хранятся в одном репозитории, номер задачи указывается в формате #42 — однозначная попытка установить связь с задачей в этом же репозитории;
  • чтобы установить связь с задачей, хранящейся в другом репозитории, используйте формат username/reponame#42, где username и reponame — пользователь и репозиторий, в котором хранятся задачи. Примеры имен веток: feature_#42-some_desc, bugfix_orgName/repoName#42-some-words;
  • если в имени или сообщении указано несколько номеров задач, объект прикрепляется к каждой из них, если такая задача существует;
  • если задача не существует, привязка не выполняется. Если сразу после номера задачи идут дополнительные цифры, система проверяет номер с учетом этих цифр: например, если номер задачи #123, а в имени ветки указан #1232, система проверит номер #1232 и, если такой задачи не существует, ветка не будет привязана к задаче #123;
  • ветки, запросы на слияние и коммиты, созданные локально, прикрепляются только после отправки изменений в удаленный репозиторий (пуша);
  • если создается задача, номер которой совпадает с частью имени ранее созданной ветки (или частью сообщения/описания ранее созданного коммита), ветка автоматически прикрепляется к задаче при следующем пуше в ветку;
  • при переименовании ветки или запроса на слияние, а также при изменении сообщения/описания коммита добавляется привязка к новой задаче, при этом привязка к предыдущей задаче не снимается.

Прикрепление веток и запросов на слияние

  • ветка автоматически прикрепляется к задаче при создании и при переименовании, если в ее имени указан номер задачи;
  • запрос на слияние автоматически прикрепляется к задаче при создании и при переименовании, если в его имени или описании указан номер задачи;
  • запрос на слияние, созданный из ветки, уже прикрепленной к задаче, автоматически прикрепляется к этой задаче, даже если в его имени нет номера задачи;
  • запрос на слияние, созданный для слияния в ветку, прикрепленную к задаче, автоматически прикрепляется к этой задаче;
  • если запрос на слияние создан из ветки А, прикрепленной к задаче А, для слияния в ветку Б, прикрепленную к задаче Б, запрос прикрепляется к обеим задачам;
  • при прикреплении запроса на слияние к задаче автоматически прикрепляется и ветка, которую мержит запрос (source), а также, при наличии, связанные с ней запросы на слияние.

Прикрепление коммитов

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

При переписывании истории (git push --force) привязка к предыдущим задачам не снимается, привязка к новым задачам выполняется.

Note

О событии автоприкрепления ветки и/или запроса на слияние отображается в истории задачи (вкладки Все и История), а о событии автоприкрепления задачи — в ленте активности запроса на слияние.

Пример

  1. Создайте еще одну задачу. Запомните номер созданной задачи.

    Создайте в разделе «Код» еще одну ветку и укажите в ее имени номер задачи. Например, feature_#42. Создайте запрос на слияние данной ветки с веткой master. При создании запроса обратите внимание, что имя запроса на слияние по умолчанию содержит в себе имена сливаемых веток, и, как следствие в данном случае, — номер задачи. Не меняйте имя запроса на слияние.

    После успешного создания запроса на слияние перейдите к созданной ранее задаче. Обратите внимание, что в блоке Разработка автоматически прикреплены созданная ветка и запрос на слияние.

Использование регулярных выражений в коммитах для автоматического прикрепления

  1. Перейдите в настройки репозитория, в разделе настроек Задачи включите функциональность Автоприкрепление по сообщению коммита. Обратите внимание, что появилось поле Регулярное выражение для автоприкрепления. При нажатии на него открывается окно Выберите регулярное выражение для автоприкрепления с предустановленными вариантами:

    Регулярное выражениеПример задач
    (f|bug)/{issue_number}f/1, bug/232
    /{issue_number}/2345, /232
    \w+/{issue_number}f/1, feature/232

    Выберите подходящий вариант кнопкой Применить. Автоприкрепление осуществляется только к той задаче, номер которой указан в формате регулярного выражения. По умолчанию выбрано регулярное выражение, которое можно отредактировать на свое усмотрение.

  2. Создайте новую задачу в данном репозитории, запомните ее номер.

  3. Перейдите в раздел Код, создайте новую ветку для разработки фичи, произведите в ней нужные наработки. Название ветки не имеет значения. При фиксации изменений укажите в качестве сообщения коммита следующую строку Refactoring feature/#10, где #10 — номер задачи, взятой из предыдущего шага, а feature — любое имя, соответствующее выбранному регулярному выражению. Зафиксируйте изменения.

  4. Вернитесь на страницу задачи #10, обратите внимание, что ветка привязалась автоматически. Создайте запрос на слияние данной ветки и ветки master. Название запроса на слияние не имеет значения. Вернитесь в задачу, обратите внимание, что вновь созданный запрос на слияние также прикреплен к задаче.