Я хочу, чтобы моя команда, включая меня, проверяла коммиты друг друга. Ни один из коммитов не должен быть отправлен в репозиторий, включая мой, до тех пор, пока он не будет проверен другим членом команды. Я немного потерялся в документации фабрикатора, поэтому я спрашиваю здесь, есть ли способ настроить такой рабочий процесс?
Phabricator ограничивает git push
Ответы (2)
Вы можете ограничить отправку только репозиториями, размещенными на Phabricator. Если ваш репозиторий размещен в другом месте (например, на GitHub), Phabricator, очевидно, не может запретить пользователям нажимать на него.
Чтобы ограничить отправку сообщений, создайте новое правило Herald (в приложении Herald), например:
- Создайте новое правило «Commit Hook: Commit Content».
- Выберите «Глобальный» в качестве типа правила.
Затем настройте правило следующим образом:
When [all of] these conditions are met:
[Accepted Differential revision][does not exist]
Take these actions every time this rule matches:
[Block change with message][Review is required for all changes.]
Вы можете использовать дополнительные условия, подобные этому, чтобы запускать правило только в определенных репозиториях:
[Repository][is any of][ ... list of review-requied repositories ... ]
Или такое условие, чтобы пользователи могли обойти правило, написав какую-нибудь строку вроде «@bypass-review» в сообщении в экстренной ситуации:
[Body][does not contain][@bypass-review]
Если вы добавите подобный обход, вы можете упомянуть об этом в сообщении об отказе.
Кажется, вам нужна предварительная проверка кода. Мы настраиваем это, выполнив следующие действия (мы используем репозитории Git. Если вы используете какой-либо другой тип, эти шаги могут отличаться):
- Setup a Herald rule
- New rule for:
Commit Hook: Commit Content
- Если вам нужен только один репо, вы можете использовать тип правила:
Object
, однако мы использовалиGlobal
- Для условий: мы выбрали
Accepted Differential revision
иdoes not exist
- Действие:
Block Change with message
Для получения сообщения мы отсылаем их к статье, в которой рассказывается об использовании Arcanist.
- New rule for:
- Для каждого проекта потребуется .arcconfig, по крайней мере, с этой строкой:
{ "phabricator.uri": "http://your.phabricator.url" }
- Day-day developers are going to have to use arcanist.
- Developer creates a local branch.
- Изменяет и фиксирует код в локальной ветке.
- Когда закончите, запустите
arc diff [base_branch_name]
- Это создаст дифференциальную версию, которая позволит другому разработчику проверить код.
- Если необходимы изменения, разработчик проверяет свою локальную ветку, вносит изменения, делает коммиты и повторно запускает
arc diff [base_branch_name]
для обновления diff. - После внесения всех правок запустите
arc land [local_branch_name] --onto [base_branch_name]
Надеюсь, это поможет. Кроме того, разработчики Phabricator общаются в IRC-канале freenode.net под названием #phabricator
. Присоединяйтесь к сообществу; они всегда были очень полезны для меня.