2016-09-29 38 views
2

正如this答案中所述,可以在Github提交中引用問題。如果提交格式不正確,是否可以拒絕Github上的提交?

是否有可能拒絕提交它是而不是格式化爲這樣?

例子:
fix gh-12 foo bar是正確的
foo bar將是錯誤

更新:

快到了,這仍然是不工作...有什麼想法?

我現在有以下幾點:.git/hooks/commit-msg

#!/bin/bash 
commit_regex='(gh-[0-9]+|merge)' 

error_msg="Aborting commit. Your commit message is missing either a Github Issue ('gh-1111') or 'Merge'." 

if ! grep -E "$commit_regex" <<< "$0"; then 
    echo "$error_msg" >&2 
    exit 1 
fi 
+0

$ 0就是你的.git/hooks/commit-msg ..你應該對你的commit-msg的第一個參數grep「$ 1」。 – rasjani

+0

也是這樣,正則表達式會傳遞任何提交消息, - [0-9]提交消息中的任何地方。例如「哦,我的gh-0sh!」將通過測試:D – rasjani

回答

0

您需要設置pre-receive hook,但此功能僅適用於GitHub的企業。如果您未使用GitHub Enterprise,當使用webhooks推送提交時仍然可以收到通知,但您不能拒絕這種推送。

編輯:

當然你也可以設置本地鉤 - 看rasjani's answer

+0

預先提交掛鉤在客戶端上將做的伎倆,但然後它需要鉤子腳本提供*和*使用.. – rasjani

+0

Aha,@rasjani,任何洞察如何找到關於這個信息? –

+0

謝謝大家,我已經更新了這個問題。這裏有什麼想法? –

2

Python版本可能會是這個樣子:

#!/usr/bin/python 
import sys 
import re 
ret = 1 
try: 
    with open(sys.argv[1]) as msg: 
     res = re.match("^fix gh-[0-9]+.*$", msg.readline()) 
     if res != None: 
      ret = 0 
except: 
    pass 
if (ret != 0): 
    print("error_msg_goeth_here") 
sys.exit(ret) 

通常它的第一行應與預先定義的格式,但是那只是我個人的意見。