簡體   English   中英

SVN提交相同消息的預提交鈎

[英]SVN Pre-Commit Hook For Identical Messages

我的同事們很固執。 剛開始時,它們將不帶任何消息地提交,因此我嘗試對其進行教育,並放入預提交腳本中以檢查是否為空,以防它們遺忘。 然后,他們會輸入“已修復”之類的消息,因此我再次與他們交談,並更新了腳本以強制其鏈接到錯誤跟蹤器。 現在他們將同一文件連續提交8次相同的提交消息(錯誤ID:Bug標題)。

在與他們討論這無濟於事之后,我如何制作一個預提交鈎子來檢查提交消息是否與最后20條提交消息之一不同?

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

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在臨時目錄中搜索提交消息。 文件。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM