如果你的開發人員沒有受過教育,那麼他們可能不會意識到你的svn鉤子在做什麼,如果他們故意編輯svn:mergeinfo屬性純粹是爲了提交發布分支而不是合併,那麼你就有更大的問題。
此腳本檢查提交是否用於發佈分支。 然後它使用svnlook diff來檢查是否存在屬性更改以及svn:mergeinfo是否已更改。
!#/bin/bash
REPOS="$1"
TXN="$2"
#Make the release branch only accept merge commits
if svnlook changed $REPOS -t $TXN |grep -q "my-release-branch-name/" ; then
if svnlook diff $REPOS -t $TXN |grep 'Modified: svn:mergeinfo' && svnlook diff $REPOS -t $TXN |grep 'Property changes on:'; then
#Assume that someone hasn't gone to the trouble of making a commit look like a merge!
exit 0
else
echo "Branch my-release-branch-name only accepts merge commits! " 1>&2
exit 1
fi
fi
# All checks passed, so allow the commit.
exit 0
您試圖阻止發佈分支上的意外提交嗎? – forsvarir
不......我的意圖是停止發佈分支中未合併的提交.ie,開發人員只允許提交合並修訂。這是爲了跟蹤開發分支和發佈分支的修訂。 – born
然後,似乎另一種方法是教育開發人員不要這樣做,並通過權限控制對發行版分支的訪問,如果這不能解決問題。從你的描述看來,我可以通過創建一個隨機分支,合併到發佈版或者在提交之前修改svn:mergeinfo屬性來解決觸發器問題。 – forsvarir