Phabricator限制git推

mes*_*age 13 phabricator

我希望我的团队包括我自己审查彼此的提交.在未经其他团队成员审核之前,不得将任何提交包括在我的回购中.我有点迷失在phabricator文档中,所以我在这里问,有什么方法可以设置这种工作流程吗?

Eva*_*ley 23

您只能限制推送到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.]
Run Code Online (Sandbox Code Playgroud)

您可能希望使用这样的其他条件,仅在某些存储库中运行规则:

[Repository][is any of][ ... list of review-requied repositories ... ]
Run Code Online (Sandbox Code Playgroud)

或者像这样的条件,让用户在紧急情况下通过在消息中写一些像"@ bypass-review"这样的字符串来绕过规则:

[Body][does not contain][@bypass-review]
Run Code Online (Sandbox Code Playgroud)

如果您添加这样的旁路,您可以在拒绝消息中提及它.


CEP*_*EPA 10

您似乎想要预先提交代码审核.我们通过执行以下操作来设置它(我们使用Git repos.如果您使用其他类型,这些步骤可能会有所不同):

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

我希望这有帮助.此外,Phabricator开发人员在freenode.net IRC频道中进行了聚会#phabricator.加入社区吧; 他们一直对我很有帮助.