2014-09-04 2 views
11

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

ответ

19

Вы можете ограничить доступ только к репозиториям, размещенным в Phabricator. Если ваш репозиторий размещен в другом месте (например, GitHub), Phabricator, очевидно, не может помешать пользователям нажимать на него.

Чтобы ограничить толчки, создать новое правило Herald (в приложении Herald), как это:

  • Создать новые "Commit Крюка: Commit содержания" правила.
  • Выберите «Глобальный» в качестве типа правила.

Затем настроить правило так:

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] 

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

+0

Мы используем в качестве клиента исходное дерево/git-расширения, можете ли вы указать образец сообщения об отправке, если мы реализуем этот фиксатор фиксации. – Strikers

8

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

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

+0

спасибо, ваш ответ очень похож на ответ Эванса, но Эван был немного быстрее :) Возьмите голосование в любом случае ... – message

+0

Спасибо. Да, я забыл обновить страницу, прежде чем публиковать свой ответ. Я обычно делаю лучше с этим. – CEPA

+0

Мы используем в качестве клиента расширение дерева/git-расширений, можете ли вы предоставить примерный формат сообщения фиксации, если мы реализуем этот фиксатор фиксации. – Strikers

Смежные вопросы