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 ... ]
2 回答
您只能限制推送到Phabricator托管的存储库 . 如果您的存储库托管在其他地方(如GitHub),Phabricator显然无法阻止用户推送它 .
要限制推送,请创建一个新的Herald规则(在Herald应用程序中),如下所示:
创建新的"Commit Hook: Commit Content"规则 .
选择"Global"作为规则类型 .
然后像这样配置规则:
您可能希望使用这样的其他条件,仅在某些存储库中运行规则:
或者像这样的条件,让用户在紧急情况下通过在消息中写一些像“@ bypass-review”这样的字符串来绕过规则:
如果您添加这样的旁路,您可以在拒绝消息中提及它 .
您似乎想要预先提交代码审核 . 我们通过执行以下操作来设置它(我们使用Git repos . 如果您使用其他类型,这些步骤可能会有所不同):
设置先驱规则
新规则:
Commit Hook: Commit Content
如果您只想要一个仓库,可以使用规则类型:
Object
,但是,我们使用Global
条件:我们选择
Accepted Differential revision
和does not exist
动作:
Block Change with message
对于消息,我们将它们引用到一篇文章中,使用Arcanist来完成它们每个项目至少需要.arcconfig这一行:
{ "phabricator.uri": "http://your.phabricator.url" }
日间开发人员将不得不使用arcanist .
Developer创建一个本地分支 .
更改并将代码提交到本地分支 .
完成后,运行
arc diff [base_branch_name]
这将创建一个差异修订版本,允许其他开发人员进行代码审查 .
如果需要更改,开发人员会检出他的本地分支,进行更改,进行提交,然后重新运行
arc diff [base_branch_name]
以更新差异 .完成所有修订后,运行
arc land [local_branch_name] --onto [base_branch_name]
我希望这有帮助 . 此外,Phabricator开发人员在名为
#phabricator
的freenode.net IRC Channels 中进行了视频群聊 . 加入社区吧;他们一直对我很有帮助 .