最近在提交svn有一次log message中打错了两个字,所以想去把那次提交的log message修改下,在工作目录下空白处右键TortoiseSVN -> show log -> 选中需要修改的那次提交 -> 右键edit log message,整套操作如丝般顺滑,错字也很快改好,点击OK,下面是见证奇迹的时刻:
看样子大概是需要管理员创建一个hook程序?Google了一通之后明白了一些事情:
- 每次有新属性提交,修改或者删除时svn都会调用一个名叫pre-revprop-change的hook程序
- 在svn的repo/hooks 目录下有一个 pre-revprop-change.tmpl 文件,此文件是一个模板文件,里面写的内容很重要,标明了可用的参数以及正确的使用方式
- 如果想要使用pre-revprop-change这个hook程序,需要新建一个名为pre-revprop-change的可以行程序,windows上可以命名为 pre-revprop-change.bat 或者 pre-revprop-change.exe,Linux上应该不用后缀名,但是需要修改下权限,使改文件有可执行权限,有文章中提到 chmod 755 就行了
- 此hook程序 return 0 表示执行成功,return 1 表示执行失败
有了以上这些认识其实可以根据自己的需求去写一个pre-revprop-change.bat文件,比如大致逻辑是 只修改log信息,log信息不能为空 且 没有修改其他内容,此时返回0,其余情况返回1。
幸好已经有小伙伴做了这些操作,这篇文章 里的小哥就写好了这个bat文件,看了下代码,嗯 没啥问题,条件判断很明确,就是goto用的有点多,不过没关系了实现的逻辑和咱们的需求是一致的,所以可以使用。
新建一个空文件,把文章中的代码复制到文件中,保存为 pre-revprop-change.bat,存放在 repo/hooks 路径下即可。现在再去工作目录下 edit log message 就可以成功了。
参考链接:
: http://svnbook.red-bean.com/en/1.7/svn.ref.reposhooks.pre-revprop-change.html
: https://stackoverflow.com/questions/197224/what-is-a-pre-revprop-change-hook-in-svn-and-how-do-i-create-it
: https://ayria.livejournal.com/33438.html