我的同事們很固執。在開始時他們會提交沒有消息,所以我試圖教育他們,並提交一個預先提交的腳本來檢查空的情況下,他們忘了。 然後他們會像「固定」一樣輸入消息,所以我再次與他們交談並更新腳本以強制鏈接到錯誤跟蹤器。現在他們爲同一個文件連續8次提交相同的提交信息(Bug ID:Bug Title)。SVN預確認掛鉤相同的消息
當我跟他們談論這些沒有什麼幫助時,我該如何做一個預先提交的鉤子來檢查提交消息是否與最後20條提交消息之一不相同?
我的同事們很固執。在開始時他們會提交沒有消息,所以我試圖教育他們,並提交一個預先提交的腳本來檢查空的情況下,他們忘了。 然後他們會像「固定」一樣輸入消息,所以我再次與他們交談並更新腳本以強制鏈接到錯誤跟蹤器。現在他們爲同一個文件連續8次提交相同的提交信息(Bug ID:Bug Title)。SVN預確認掛鉤相同的消息
當我跟他們談論這些沒有什麼幫助時,我該如何做一個預先提交的鉤子來檢查提交消息是否與最後20條提交消息之一不相同?
svnlook有2個選項可以組合在一起排列。
svnlook的登錄http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.c.log.html
svnlook的年輕http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.c.youngest.html
老三獲取最新版本。然後我回應最後20個提交到一個臨時。文件並使用grep在temp中搜索提交消息。文件。
grep選項爲F,用於使用文件作爲輸入,x用於匹配整行,q用於安靜。
#Prevent people putting in the same commit message multiple times by looking for an identical message in the last 20 commits
ID=$(svnlook youngest $REPOS)
COMMITS=/tmp/svncommits.txt
rm $COMMITS
for ((i=$ID-20; i<=$ID; i++))
do
echo $(svnlook log $REPOS -r $i) >> $COMMITS
done
if $(grep -Fxq "$COMMIT_MSG" "$COMMITS") ; then
echo "Please describe what your change is, why you made it and don't use the same commit message every time." 1>&2
exit 1
fi
您可以在預提交掛鉤中使用SVN命令或任何其他shell命令。您只需提供已安裝工具的完整路徑。請記住,它在服務器上運行,因此它具有file://訪問存儲庫的權限。因此,請執行svnlook log
(首選)或svn log
,並檢查結果輸出是否與當前日誌消息匹配。
svnlook log是pre-commit hooks中的首選選項,而不是svn log。 – opticyclic
謝謝,很高興知道。這是有原因的嗎? – Ben
不要浪費你的時間建築牆壁。你的同事總會找到一種方法來攀登它。 –
向他們顯示信息提交消息的值。他們不想被告知*要做什麼,你需要*展示他們的好處(對我來說有什麼好處)。制定更多限制性的壁壘只會讓他們更加憤怒,導致內容和討論不太有用。 – alroc
我希望在問題開始時的背景能夠避免像這樣的評論。如前所述,我已經多次與他們交談,現在需要變得嚴厲。 – opticyclic