Phabricator ограничивает git push

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


person message    schedule 04.09.2014    source источник


Ответы (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]

Если вы добавите подобный обход, вы можете упомянуть об этом в сообщении об отказе.

person Evan Priestley    schedule 04.09.2014
comment
Мы используем расширения исходного дерева/git в качестве клиента, не могли бы вы привести пример формата сообщения фиксации, если мы реализуем этот хук фиксации. - person Strikers; 28.04.2015

Кажется, вам нужна предварительная проверка кода. Мы настраиваем это, выполнив следующие действия (мы используем репозитории Git. Если вы используете какой-либо другой тип, эти шаги могут отличаться):

  1. Setup a Herald rule
    • New rule for: Commit Hook: Commit Content
    • Если вам нужен только один репо, вы можете использовать тип правила: Object, однако мы использовали Global
    • Для условий: мы выбрали Accepted Differential revision и does not exist
    • Действие: Block Change with message Для получения сообщения мы отсылаем их к статье, в которой рассказывается об использовании Arcanist.
  2. Для каждого проекта потребуется .arcconfig, по крайней мере, с этой строкой: { "phabricator.uri": "http://your.phabricator.url" }
  3. 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. Присоединяйтесь к сообществу; они всегда были очень полезны для меня.

person CEPA    schedule 04.09.2014
comment
спасибо, ваш ответ очень похож на ответ Эванса, но Эван был немного быстрее :) Все равно проголосуйте... - person message; 10.09.2014
comment
Спасибо. Да, я забыл обновить страницу, прежде чем опубликовать свой ответ. Я обычно лучше с этим справляюсь. - person CEPA; 10.09.2014
comment
Мы используем расширения исходного дерева/git в качестве клиента, не могли бы вы привести пример формата сообщения фиксации, если мы реализуем этот хук фиксации. - person Strikers; 28.04.2015