使用 svn pre-commit 鈎子規范代碼提交日志


目的

  1. 規范 svn 提交日志格式,讓每一次提交更慎重;
  2. 拒絕不填寫日志的提交;
  3. 便於日后追溯;

怎么做

一個新建好的 svn 倉庫目錄如下,可以看到有一個 hooks 的目錄,里面存放了一些 svn 默認的鈎子腳本,這次我們需要關注的就是 pre-commit 鈎子。

  1. 在 hooks 目錄下新建 pre-commit.bat 腳本,內容如下:

    @echo off
    setlocal
    set REPOS=%1
    set TXN=%2
    set SVNLOOK="C:\Program Files\VisualSVN Server\bin"
    set PYTHON="C:\Program Files\Python35"
    
    
    %SVNLOOK%\svnlook.exe log "%REPOS%" -t "%TXN%" | %PYTHON%\python.exe C:\VisualSVN\check.py > nul
    
    
    if %errorlevel% gtr 0 goto err
    exit 0
    
    :err
    echo "Message 格式錯誤,正確格式:Bug|Task #1000 修改描述" 1>&2
    exit 1
    
  2. 新建 check.py 文件,內容如下:

    import re
    import sys
    
    message = sys.stdin.read()
    restr = r'^(Bug|Task)\s#\d+\s\w+'
    
    if re.match(restr, message) != None:    
        exit(0)
    else:
        exit(1)
    

實現原理其實很簡單,調用 svnlook 指令獲取本次提交的日志內容,判斷是否符合指定格式要求就好了,但是因為 bat 自帶的 findstr 對正則支持不友好,所以這里又寫了一個 python 的腳本來對格式進行驗證。然后嘗試不寫日志提交,就會給出如下提示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM