2016-10-20 53 views
2

我在受管制的環境中工作,其中軟件更改需要特定人員或角色的特定簽名。目前這是使用git進行版本控制,並在git之外跟蹤批准。使用git進行審批流程?

我想看看是否有辦法在git中進行審批。如果有一個只有github的解決方案(基於github分叉和pull請求,或者github代碼評論等),這也會很有趣。

所需要的具體內容是:

  • 批准的東西應該很容易找出(GIT日誌)和可證明的,在某種程度上等同於或工具DocuSign電子簽名。例如使用代碼簽名密鑰簽名就可以工作。

  • 每一段代碼可能需要不止一個人批准(有可能是每個項目的列表,或根據具體情況逐案)

  • 這是非常理想的是能夠同時批准更大的變更集(拉取請求,分支合併等),而不僅僅是一次提交。

  • 除非有正確的批准,否則可以防止某些操作(合併到主/發佈標籤等),這是可取的,但不是必需的。

我知道git有一個signed-off-by功能,這可以用於我所描述的嗎?

編輯謝謝你所有的答案......從他們中的一些人的方向看來,我應該澄清一點。我的目標主要是輕鬆收集有關誰批准什麼時候(以及代碼評論中更詳細的信息)的信息,而不是自動執行策略(儘管這很好)。在這種情況下,所有貢獻者都在同一個組織內,並且可以被認爲是可信的,並且(通常)做正確的事情。只是這個過程現在是手動的,非常緩慢並且容易出錯。給你一個想法:對於每一個拉取請求,我們創建一對MS Word文檔,並將它們放入Docusign進行簽名...

+2

看看bitbucket也 - 它有很多這些控制功能。 –

+0

@DavidAldridge謝謝,我會的。如果您願意,可以將其作爲答案張貼,也許您可​​以提供更多有關其工作原理的更多細節 –

回答

1

PullApprove是一項服務,它允許拉取請求被阻止,直到它們被審覈並批准由相關人員。它只適用於Github回購,但它似乎滿足您的所有要求。 PullApprove的批准是通過在與pull請求對應的註釋線程中留下注釋給出的,因此它會在那裏留下記錄。

1

您可以使用GitHub protected branches實現這一部分:

受保護的分支:

  • 不能有變化合併到它,直到需要的狀態抽查合格
  • 不能有變更合併到其中,直到所需審覈通過爲止

repo’s settings under branches中配置它們。

但是在GitHub中沒有簽署提交的直接設施,不幸的是沒有任何事情可以強制執行提交。

+0

由於GitHub使它成爲可以[只需解除所需評論](https://github.com/博客/ 2265-dismissing-reviews-on-pull-requests)並且合併你的拉,但我不確定這種方法是否會通過徹底的審查...... – Yawar

+0

@Yawar有趣的是,儘管它意味着它只會阻止那個人拒絕阻止它,仍然需要其他人批准它。但不確定,因爲我沒有測試過它。 –

1

從你的描述,這聽起來像一個用例的'獨裁者和中尉的工作流程:https://git-scm.com/book/it/v2/Distributed-Git-Distributed-Workflows#Dictator-and-Lieutenants-Workflow

此工作流程實際上是使用由Linus Torvalds(在「獨裁者」)和他所信任的「副官」(內核子系統維護者)來實現分層的項目結構。正如你可以想象的那樣,它不是特定於GitHub--它完全基於項目的多個git分支,每個分支由一個負責該分支的人維護。

下面是它如何與你的要求的工作:

  • 批准的東西是誰擁有它自己的叉子的問題。如果他們擁有了它,那就意味着他們拉了它並因此批准了它。

  • 對於多個審批(層次結構級別),第一批准人將其拉出並將其發佈到他們的分支上;那麼下一個審批人從第一批准人的分支中抽取併發布自己的分支;等等。

  • 這種技術主要用於拉取請求(即分支),所以這一點是自動覆蓋的。

  • 通過協議,您可以通過協議將'獨裁者'的回購作爲'主'或規範回購來「保佑」,任何東西都會被自動理解爲已通過所有必要的批准。祝福的回購維護者只會從中尉的回購協議中退出,而不會從其他人處獲得回報,從而自動執行批准過程。

我強烈建議你紙和筆這與你想的人(或角色);只是使一個人對應回購協議的一個分支的心理聯想。

+0

你假設所有的「角色」都是程序員,因此可以使用git並編譯軟件等。 –