【问题标题】:Phabricator restrict git pushPhabricator 限制 git push
【发布时间】:2014-10-29 00:58:15
【问题描述】:

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

【问题讨论】:

    标签: phabricator


    【解决方案1】:

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

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

    【讨论】:

    • 我们使用源码树/git 扩展作为客户端,如果我们实现了这个提交钩子,请你提供一个示例提交消息格式。
    【解决方案2】:

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

    1. 设置先驱规则
      • 新规则:Commit Hook: Commit Content
      • 如果你只想要一个repo,你可以使用规则类型:Object,但是,我们使用Global
      • 对于条件:我们选择了Accepted Differential revision和does 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 开发人员在 freenode.net IRC 频道上的聚会,称为#phabricator。快来加入社区;他们一直对我很有帮助。

    【讨论】:

    • 谢谢,您的回答与 Evans 的回答非常相似,但 Evan 的回答要快一些 :) 无论如何都要投赞成票...
    • 谢谢。是的,我在发布答案之前忘记刷新页面了。我通常会做得更好。
    • 我们使用源码树/git 扩展作为客户端,如果我们实现了这个提交钩子,请你提供一个示例提交消息格式。
    猜你喜欢
    • 2016-10-30
    • 2011-07-13
    • 1970-01-01
    • 2011-05-29
    • 2016-05-21
    • 2015-07-03
    • 2011-05-23
    • 2012-12-29
    • 2013-11-08
    相关资源
    最近更新 更多