svn提交時強制注釋

2021-09-02 03:09:23 字數 2810 閱讀 2142

不少開發員提交修改的時候都不寫注釋,導致檢視歷史時很費勁,也不太符合規範。有的公司要求每次提交修改時都寫上bug號或者任務描述,那麼如何在工具上防止開發員們不寫注釋呢?

利用svn的pre-commit鉤子可簡單實現此要求。

進入倉庫project1/hooks目錄,找到pre-commit.tmpl檔案,重新命名,去掉字尾.tmpl。

編輯pre-commit檔案:(linux系統和windows系統指令碼內容見1和2)

1、linux系統

方法1:

將:$svnlook log -t "$txn" "$repos" | \

grep "[a-za-z0-9]" > /dev/null || exit 1

commit-access-control.pl "$repos" "$txn" commit-access-control.cfg || exit 1

這三行注釋掉(前面加#符號),

在此位置新增如下幾行:

logmsg=`$svnlook log -t "$txn" "$repos" | grep "[a-za-z0-9]" | wc -c`

if [ "$logmsg" -lt 5 ];#要求注釋不能少於5個字元,您可自定義

then

echo -e "\nlog message cann't be empty! you must input more than 5 chars as comment!." 1>&2

exit 1

fi儲存,退出。

給pre-commit新增可執行許可權:

chmod +x pre-commit

這裡記得修改 $svnlook=(svnlook的路徑,/csvn的安裝目錄/bin/svnlook)

配置結束,可以使用了。

方法2:

這兩天把專案的開發機遷移到了linux環境,用python重寫了原來的svn hook,儲存為pre-commit放到svn的hooks目錄下,chmod +x pre-commit加上執行許可權即可。windows下寫svn鉤子比較麻煩,只能是批處理或者exe,linux下隨便用什麼指令碼語言寫都可以,只要加上可執行許可權就行了。

#! /usr/bin/env python

# -*- coding: utf-8 -*-

"""svn提交前檢查鉤子

功能: 1、強制填寫提交注釋,內容10位元組以上

2、強制注釋格式為:***:***

3、提交檔案檢查,過濾不允許提交的檔案

"""import sys

import os

import re

def main(argv):

(repos, txn) = argv

badlist = (".*config\.php$", ".*/php/cache", ".*test", "config\.js$","^.*\.db$")

message = "".join(os.popen("/usr/bin/svnlook log '%s' -t '%s'" % (repos, txn)).readlines()).strip()

if len(message) < 10:

sys.stderr.write("請輸入本次提交的修改內容,10位元組以上。");

sys.exit(1)

if message.find(':') < 1:

sys.stderr.write("請按規範填寫注釋,格式為:功能名: 修改說明。");

sys.exit(1)

changelist = os.popen("/usr/bin/svnlook changed '%s' -t '%s'" % (repos, txn)).readlines()

for line in changelist:

for pattern in badlist:

if re.search(pattern, line):

sys.stderr.write("請不要把 %s 加入版本庫。" % line[1:].strip());

sys.exit(1)

sys.exit(0)

if __name__ == "__main__":

main(sys.argv[1:])

2、windows強制注釋指令碼

@echo off 

setlocal 

set repos=%1 

set txn=%2          

rem 保證輸入8個字元

svnlook log %repos% -t %txn% | findstr "........" > nul

if %errorlevel% gtr 0 goto :err_action

rem 過濾空格字元

svnlook log %repos% -t %txn% | findstr /ic:"        " > nul

if %errorlevel% gtr 0 goto :success

:err_action

echo 你本次版本提交未填寫任何變更的日誌說明資訊.      >&2

echo 請補充日誌說明資訊後再提交**,例如:功能說明等.  >&2

echo 輸入的日誌資訊不少於8個字元說明(或4個漢字),謝謝! >&2

echo *******************禁止空格資料***************** >&2

goto :err_exit

:err_exit

exit 1

:success

exit 0

svn提交時強制新增注釋

人在很多時候,靠自覺或者說是靠道德,是不行的。必須制定規則,讓其強制遵守。程式設計師也是人,也需要規則。svn提交時,如果沒有注釋,在查閱歷史時,會非常不方便。因此我們需要有乙個讓程式設計師提交 時,強制新增注釋的規則。下面看看在svn中怎麼實現。2.在編輯框中輸入如下指令碼 echo off se...

svn提交時強制新增注釋

人在很多時候,靠自覺或者說是靠道德,是不行的。必須制定規則,讓其強制遵守。程式設計師也是人,也需要規則。svn提交時,如果沒有注釋,在查閱歷史時,會非常不方便。因此我們需要有乙個讓程式設計師提交 時,強制新增注釋的規則。下面看看在svn中怎麼實現。rem 代表5個字元 svnlook log rep...

svn提交時強制新增注釋

人在很多時候,靠自覺或者說是靠道德,是不行的。必須制定規則,讓其強制遵守。程式設計師也是人,也需要規則。svn提交時,如果沒有注釋,在查閱歷史時,會非常不方便。因此我們需要有乙個讓程式設計師提交 時,強制新增注釋的規則。下面看看在svn中怎麼實現。rem 代表5個字元 svnlook log rep...