Как применить формат сообщения фиксации слияния (запрос на извлечение) в BitBucket - PullRequest
1 голос
/ 11 апреля 2019

Наша команда переходит на BitBucket.Наш рабочий процесс требует определенного форматирования для сообщений коммита для кода, который объединен с основным репо-источником.

У каждого разработчика есть один (или более) форк (-ы).Наш рабочий процесс заключается в том, чтобы перенести ветвь функции / ошибки на ветвь и создать запрос извлечения из этой ветки.Два других разработчика должны просмотреть и +1 запрос на получение, прежде чем его можно будет объединить.

Когда кто-то нажимает кнопку «Объединить», BitBucket отображает диалоговое окно с заголовком «Запрос на объединение слиянием».На этом этапе разработчик может редактировать текстовое сообщение, которое регистрируется для слияния, прежде чем нажать вторую кнопку слияния.Это сообщение, которое должно соответствовать определенному формату.

Я прочитал документацию здесь: https://scriptrunner.adaptavist.com/latest/bitbucket/StashMergeChecks.html В нем есть несколько очень конкретных примеров, но ничего, что относится к нашему варианту использования.Мне не удалось найти хорошую ссылку общего назначения о том, как создавать проверки слияния.

Я могу написать условие, которое проверяет определенное строковое значение:

mergeRequest.message == "My Message"

НоМне нужно это, чтобы проверить регулярное выражение.Как я могу написать ловушку перед слиянием, чтобы отклонить слияние, если сообщение не соответствует регулярному выражению?

Добавление

Из документации кажется, чтокод сценария проверки условий будет правильным местом для применения этого условия.Сценарий может быть добавлен в Repository Settings > SCRIPTRUNNER > Script Merge Checks > Conditional merge check.Для проверки условного слияния приведен длинный список примеров, в том числе:

  • Текущий пользователь в определенной группе
  • Измененные файлы содержат файлы .XYZ
  • Измененные файлы в секретном каталоге
  • Целевой веткой является релиз

После некоторого поиска и эксперимента я обнаружил, что могу блокировать слияния на основе сообщения фиксации.Но пока я нашел только примеры сравнения целых строк с константными строковыми выражениями.Я не нашел, как использовать регулярное выражение в этом сравнении.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

OP здесь после перенесения этой проблемы на задний план на несколько недель.Вопрос решен.Вы можете проверить свои сообщения о слиянии по регулярному выражению без использования плагина.Решение здесь для тех, кто занимается поиском с той же проблемой.

Во-первых, это было более сложным, чем следовало бы найти документацию для объектов, наиболее подходящих для написания сценария проверки слияния.Итак, вот пара ссылок для текущего API 6.3.0:

  • PullRequest - В конце концов, мой скрипт не использовал этот объект, ноЗапрос на удаление тесно связан с запросом на слияние, и другим может потребоваться документация.

  • MergeRequest - У этого объекта есть метод для определения контекста (см. Ниже).

Во-вторых, сценарий проверки слияния запускается в двух разных контекстах: (1) когда битбакет пытается определить, следует ли ему включить / отключить кнопку Слияние на Страница запроса на извлечение и (2) когда кто-то нажимает кнопку Объединить в диалоговом окне Запрос на объединение .В первом контексте сообщение слияния равно нулю, поэтому оно не может соответствовать регулярному выражению, и в любом случае отключать кнопку в этом случае не имеет смысла.Я только хотел, чтобы проверка происходила во втором контексте.Таким образом, сценарию необходим способ различения контекстов.

В-третьих, объектом сообщения является Java String , поэтому сценарий может вызвать метод matches(), чтобы проверить, соответствует ли сообщениеregex.

После того, как вся информация у вас под рукой, написать сценарий довольно просто:

// the message regex
String pattern = "(PATTERN1|PATTERN2|etc)"
// reject if not dry-run and
//           message doesn't match regex
! mergeRequest.isDryRun() &&
    ! mergeRequest.message.matches(pattern)
0 голосов
/ 12 апреля 2019

Вы можете попробовать некоторые из плагинов для Bitbucket, например, YACC:

https://marketplace.atlassian.com/apps/1211854/yet-another-commit-checker?hosting=server&tab=overview

Если это не соответствует вашим требованиям, вы можете написать свой собственный: https://developer.atlassian.com/server/bitbucket/how-tos/hooks-merge-checks-guide/

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