svn強制注釈for linuxとWindows

2708 ワード

多くの開発者が修正を提出するときに注釈を書かないため、履歴を表示するのに苦労し、規範に合わないことがあります.修正を提出するたびにバグ番号やタスクの説明を書くように要求する会社もありますが、開発者たちがコメントを書かないのをツールで防ぐにはどうすればいいのでしょうか.svnのpre-commitフックを使用すると、この要件を簡単に実現できます.倉庫project 1/hooksディレクトリに入りpre-commit.を見つけます.tmplファイル、名前を変更し、接尾辞を削除します.tmpl. pre-commitファイルの編集:(Linuxシステムとwindowsシステムのスクリプト内容は1と2を参照)1、Linuxシステム
方法1:
$SVNLOOK log-t"$TXN"$REPOS"|grep"[a-zA-Z 0-9])/dev/null‖exit 1 commit-access-control.pl "$REPOS""$TXN"commit-access-control.cfg‖exit 1この3行は注釈して(前に#記号を付けます)、この位置に以下のいくつかの行を追加します:LOGMSG=`$SVNLOOK log-t"$TXN"$REPOS"|grep"[a-zA-Z 0-9]|wc-c`if[$LOGMSG"-lt 5];コメントは5文字以下でなければなりません.then echo-e「Log message can n't be empty!you must input more than 5 chars as comment!」をカスタマイズできます.1>&2 exit 1 fiを保存し、終了します.pre-commitに実行可能権限を追加:chmod+x pre-commit構成が終了し、使用できます.
 
方法2:
この2,3日プロジェクトの開発機を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、 :xxx:xxx 3、 ,   :   <[email protected]> <2012/04/28> """ 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_Actionecho今回のバージョンでは、変更を記入していないログの説明情報を提出します.>&2 echoログの説明情報を補充してからコードを提出してください.例えば、機能の説明などです.>&2 echo入力のログ情報は8文字以上説明(または4文字)で、ありがとうございます!>&2 echo*****************************************************************>&2
 goto :err_exit
  :err_exit  exit 1    :success  exit 0