我有關於保護遠程分支準備了許多文章...混帳分支刪除 - HOOK
然而,我想在一個git捕捉鉤以下本地回購命令:
git branch -d abranchthatshouldnotbedeleted
我想鉤住這個命令,並根據我所做的「受保護分支」的分支列表文件進行分析,並做一個簡單的檢查來允許或拒絕刪除。
我的某些分支現在鎖定在現在管理的地方,必須加以保護。
我有關於保護遠程分支準備了許多文章...混帳分支刪除 - HOOK
然而,我想在一個git捕捉鉤以下本地回購命令:
git branch -d abranchthatshouldnotbedeleted
我想鉤住這個命令,並根據我所做的「受保護分支」的分支列表文件進行分析,並做一個簡單的檢查來允許或拒絕刪除。
我的某些分支現在鎖定在現在管理的地方,必須加以保護。
由於GitHub的doesn't allow pre-receive hook(僅post-receive ones),我會建議推到中間本地回購,通過Gitolite保護(一authorization layer,通過SSH或HTTP訪問您的git回購)。
gitolite可以幫助編碼所有類型的訪問規則,包括protecting a branch against deletion。
如果允許推送,那麼後提交鉤子可以自動推送到GitHub。
Git沒有(當前)有一個鉤子,你可以用它來做你想做的事情。有關可用掛鉤的列表,請參閱git help hooks
。
您可能想要考慮一種不同的方法。例如,你可以在一個包裝腳本或Shell函數來執行其自己的解析,以防止你刪除分支包裹git
:
git() {
[ "${1}" != branch ] ||
{ [ "$2" != -d ] && [ "$2" != -D ]; } ||
case $3 in
abranchthatshouldnotbedeleted) false;;
*) true;;
esac ||
{ printf %s\\n "ERROR: branch $3 must not be deleted" >&2; exit 1; }
command git "[email protected]"
}
上述外殼的功能是相當原始的,不能處理調用像git --git-dir=/foo.git branch -d abranchthatshouldnotbedeleted
,但你明白了。也許你可以使用git rev-parse --parseopt
使它更健壯。
你是什麼意思?「我的某些分支現在被鎖定在一個說明他們現在被管理的地方,並且必須受到保護。」?你還能夠向分支提交提交嗎? – adamdunson