by kevin
31.
八月 2019 20:08
>
最近想要对svn提交的日志进行管理。
考虑到使用bat命令进行正则校验感觉比较麻烦,而且灵活性也不好,所以选择python来实现。
首先添加svn钩子pre-submit
1: Setlocal
2: set sd=D:\Repositories\hooks
3: set py="D:\Program Files\Python37\python" %sd%\pre-commit.py %1 %2
4: for /F %%i in ('%py%') do (set r=%%i)
5: echo %r% 1>&2
6: if %r%==1 (
7: exit 1
8: ) else (
9: exit 0
10: )
11: Endlocal
上面的代码调用了pre-commit.py,具体代码如下
1: import sys, os, re
2:
3: if(len(sys.argv)<3):
4: print(1)
5: exit()
6:
7: repos = sys.argv[1]
8: txn = sys.argv[2]
9: svnserver = os.environ["VISUALSVN_SERVER"]
10: svnlook = "\"" + svnserver + "bin\\svnlook.exe" + "\""
11: logcmd = ("\"{0}bin\\svnlook.exe\" log \"{1}\" -t \"{2}\"").format(svnserver, repos , txn)
12: loghandler = os.popen(logcmd)
13: log = loghandler.read()
14: loghandler.close()
15: if(not log):
16: print(1)
17: exit()
18:
19: mr = re.match("^\\d+\\s.*", log)
20: if(mr == None):
21: print(1)
22: else:
23: print(0)
24: exit()