升级TortoiseSVN到1.8.x 之后,pre-commit失效
升级TortoiseSVN从1.7.x到1.8.x之后,原来配置的Subversion服务端调用的pre-commit失效。
pre-commit.bat:
@echo off set SVN_BINDIR=C:\csvn\bin setlocal set REPOS=%1 set TXN=%2 rem check that logmessage contains at issue number or not %SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr "^#[0-9]1*[^a-zA-Z]1*" > nul if %errorlevel% gtr 0 goto err exit 0 :err echo 注释必须以任务号开始,格式 “#123 your_message”。提交中断。Commit aborted! 1>&2 exit 1
一时手贱,折腾了两个钟头总算搞明白了。
原因如下:
1.8.x其实对svnlook也有升级,所以如果你的subversion调用hook批处理使用是默认目录,或者都是新安装的,则没有问题。悲催的是偶的subversion使用的是1.6.x的版本,也没有同时更新svnserve,两边的版本不匹配。btw:服务端不会自动升级的。
具体svnlook里面改了什么东西没有仔细研究,估计是在1.6的svnserve无法识别1.7下svnlook的注释字符串,格式有差异。
解决办法很简单:
从安装目录下找到新的svnlook.exe(大概77KB),然后对应找一下repository里面配置的pre-commit地址,替换一下就Ok。
很久没有更新博客了,有时候遇到一些问题经常google到别的博客,节约了不少时间。很多问题不是大问题,但经常分享出来也许可以帮到不少人。
另:最近做了一款 bugnet tracker的Visual Studio 2012插件,结合anksvn用,便于快速查看任务。
插件已经发布到VS工具箱
http://visualstudiogallery.msdn.microsoft.com/2e961a38-fc59-47ef-a581-28938c3d8a10
这里源代码:
http://ankhbugnetext.codeplex.com/
有兴趣的朋友可以加入进来一起完善。
再BTW:
第一条评论的小子不厚道。经分析应该是SVN客户端升级造成的问题。1.8的变化很大,WC的结构也发生了变化。升级1.8之前最好先完整提交代码;如果没有先提交,升级之后也需要执行一下"upgrade working copy",不管是AnkSvn还是TortoiseSVN,任何一个执行一下都OK。