15

我希望我的团队包括我自己来审查彼此的提交。在其他团队成员未对其进行审核之前,不应将任何提交(包括我的提交)推送到 repo 中。我有点迷失在 phabricator 文档中,所以我在这里问,有没有办法设置这种工作流程?

4

2 回答 2

25

您只能将推送限制在 Phabricator 托管的存储库中。如果您的存储库托管在其他地方(例如 GitHub),Phabricator 显然无法阻止用户推送到它。

要限制推送,请创建一个新的 Herald 规则(在 Herald 应用程序中),如下所示:

  • 创建一个新的“提交挂钩:提交内容”规则。
  • 选择“全局”作为规则类型。

然后像这样配置规则:

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]

如果您添加这样的绕过,您可以在拒绝消息中提及它。

于 2014-09-04T14:15:21.133 回答
10

看来您需要预提交代码审查。我们通过执行以下操作进行设置(我们使用 Git 存储库。如果您使用其他类型,这些步骤可能会有所不同):

  1. 设置先驱规则
    • 新规则:Commit Hook: Commit Content
    • 如果您只想要一个 repo,您​​可以使用 Rule Type: Object,但是,我们使用Global
    • 对于条件:我们选择Accepted Differential revisiondoes not exist
    • 行动:Block Change with message对于消息,我们将他们推荐给他们使用 Arcanist 的文章
  2. 每个项目都需要一个至少包含以下行 的.arcconfig : { "phabricator.uri": "http://your.phabricator.url" }
  3. 日常开发人员将不得不使用arcanist
    • 开发人员创建一个本地分支。
    • 更改并提交代码到本地分支。
    • 完成后,运行arc diff [base_branch_name]
    • 这将创建一个差异版本,允许其他开发人员进行代码审查。
    • 如果需要更改,开发人员会检查他的本地分支,进行更改、提交并重新运行arc diff [base_branch_name]以更新差异。
    • 完成所有修改后,运行arc land [local_branch_name] --onto [base_branch_name]

我希望这有帮助。此外,Phabricator 开发人员在名为#phabricator. 快来加入社区;他们一直对我很有帮助。

于 2014-09-04T14:26:16.543 回答