使用正则表达式校验svn日志

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()

svn日志查看的几个经验

by kevin 17. 八月 2019 11:15 >
最近使用svn碰到的一些情况,记录一下。 说明一下: 服务的:VisualSVN-Server 客户端:TortoiseSVN 1. 高版本客户端提交的日志,低版本的客户端查看不了。 svn客户端升级之后,最好还是svn clear一下。 2. 高版本的客户端提交的日志导致低版本服务端的钩子无法正常运行。 大概的原因是,高版本的客户端提交的日志可能包含一些分隔符(比如换行符),导致服务端无法正常调用钩子。