Phabricator限制git push。

16

我希望我的团队,包括我自己,互相审查提交的内容。在其他团队成员未经审核之前,不应将提交的任何内容,包括我的,推送到存储库中。由于我在 Phabricator 文档中有点迷失,所以我在这里询问:是否有任何方法可以设置这种工作流程?

2个回答

26

您只能限制推送到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]

如果您添加了类似这样的绕过方式,您可以在拒绝消息中提到它。


我们正在使用Source tree/git扩展作为客户端,请问如果我们实现此提交钩子,您能否提供一个样本提交消息格式。 - Strikers

10
看起来你想要一个提交前代码审核。我们通过以下步骤设置(我们使用 Git 存储库。 如果您使用其他类型,则这些步骤可能不同):
  1. 设置 Herald 规则
    • 新规则: 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. 日常开发人员需要使用 arcanist
    • 开发人员创建本地分支。
    • 更改和提交代码到本地分支。
    • 完成后,运行 arc diff [base_branch_name]
    • 这将创建一个 Differential 修订,允许另一个开发人员进行代码审核。
    • 如果需要更改,则开发人员检出本地分支,进行更改,进行提交,并重新运行 arc diff [base_branch_name] 以更新差异。
    • 完成所有修订后,运行 arc land [local_branch_name] --onto [base_branch_name]
希望这可以帮助到你。此外,Phabricator 开发人员在 freenode.net IRC 频道上聚集在 #phabricator。 加入社区;他们对我总是非常有帮助。

谢谢,你的回答与Evans的回答非常相似,但Evan更快一些 :) 无论如何,我会给你点赞的... - message
谢谢。是的,我在发布答案之前忘记刷新页面了。我通常会更好地处理这个问题。 - CEPA
我们正在使用Source tree/git extensions作为客户端,如果我们实现这个commit hook,你可以给出一个样本提交消息格式吗? - Strikers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接