2013-10-03 31 views
2

我的同事們很固執。在開始時他們會提交沒有消息,所以我試圖教育他們,並提交一個預先提交的腳本來檢查空的情況下,他們忘了。 然後他們會像「固定」一樣輸入消息,所以我再次與他們交談並更新腳本以強制鏈接到錯誤跟蹤器。現在他們爲同一個文件連續8次提交相同的提交信息(Bug ID:Bug Title)。SVN預確認掛鉤相同的消息

當我跟他們談論這些沒有什麼幫助時,我該如何做一個預先提交的鉤子來檢查提交消息是否與最後20條提交消息之一不相同?

+0

不要浪費你的時間建築牆壁。你的同事總會找到一種方法來攀登它。 –

+1

向他們顯示信息提交消息的值。他們不想被告知*要做什麼,你需要*展示他們的好處(對我來說有什麼好處)。制定更多限制性的壁壘只會讓他們更加憤怒,導致內容和討論不太有用。 – alroc

+0

我希望在問題開始時的背景能夠避免像這樣的評論。如前所述,我已經多次與他們交談,現在需要變得嚴厲。 – opticyclic

回答

1

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 
2

您可以在預提交掛鉤中使用SVN命令或任何其他shell命令。您只需提供已安裝工具的完整路徑。請記住,它在服務器上運行,因此它具有file://訪問存儲庫的權限。因此,請執行svnlook log(首選)或svn log,並檢查結果輸出是否與當前日誌消息匹配。

+0

svnlook log是pre-commit hooks中的首選選項,而不是svn log。 – opticyclic

+0

謝謝,很高興知道。這是有原因的嗎? – Ben