2013-01-11 144 views
3

我有關於保護遠程分支準備了許多文章...混帳分支刪除 - HOOK

然而,我想在一個git捕捉鉤以下本地回購命令:

git branch -d abranchthatshouldnotbedeleted 

我想鉤住這個命令,並根據我所做的「受保護分支」的分支列表文件進行分析,並做一個簡單的檢查來允許或拒絕刪除。

我的某些分支現在鎖定在現在管理的地方,必須加以保護。

+0

你是什麼意思?「我的某些分支現在被鎖定在一個說明他們現在被管理的地方,並且必須受到保護。」?你還能夠向分支提交提交嗎? – adamdunson

回答

1

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使它更健壯。