2014-09-04 87 views
11

我希望我的團隊包括我自己來審查對方的提交。除非其他團隊成員審覈,否則任何提交都不應該包括我在內的回購。我有點迷失在phabricator文檔中,所以我在這裏問,有沒有什麼方法可以設置這種工作流?Phabricator限制git推送

回答

19

只能限制推至Phabricator託管庫。如果你的倉庫託管在其他地方(比如GitHub),Phabricator顯然不能阻止用戶推送它。

要限制推動,創建一個新先驅報規則(在先驅應用程序),就像這樣:

  • 創建一個新的「提交鉤子:提交內容」的規則。
  • 選擇「Global」作爲規則類型。

然後配置這樣的規則:

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 ... ] 

還是像條件這一點,讓用戶繞過規則在緊急情況下在消息寫一些字符串,如「@旁路審查」:

[Body][does not contain][@bypass-review] 

如果您添加了這樣的旁路,您可以在拒絕消息中提及它。

+0

我們使用源碼樹/ git擴展作爲客戶端,如果我們實現這個提交鉤子,可以請給出一個示例提交消息格式。 – Strikers 2015-04-28 07:29:43

8

看來你想要一個pre-commit代碼審查。我們通過以下步驟設置這(我們使用Git的回購協議。如果你使用的是其他類型的,這些步驟可能會有所不同。):

  1. 設置導報規則
    • 新規則:Commit Hook: Commit Content
    • 如果你只想要一個回購協議,你可以使用規則類型:Object,但是,我們使用Global
    • 的條件:我們選擇Accepted Differential revisiondoes not exist
    • 行動:Block Change with message對於消息,我們將它們指的是走他們通過使用奧術師
  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。加入社區吧!他們一直對我非常有幫助。

+0

謝謝,你的答案與埃文斯的回答非常相似,但埃文更快一點:)無論如何都要投票贊成...... – message 2014-09-10 08:07:02

+0

謝謝。是的,在發佈我的答案之前,我忘了刷新頁面。我通常做得更好。 – CEPA 2014-09-10 14:36:52

+0

我們使用源碼樹/ git擴展作爲客戶端,如果我們實現了這個提交鉤子,您可以給我們一個樣例提交消息格式。 – Strikers 2015-04-28 07:31:19