内容会持续更新,有错误的地方欢迎指正,谢谢!
前言
SVN是软件项目中广泛使用的版本控制工具,TortoiseSVN就是一个SVN版本控制客户端,简便易用。除了常用的Checkout, Update, Commit等功能,TortoiseSVN还有一些高级特性可以为开发者提供更多便利,比如下面介绍的Client Side Hook Scripts(客户端钩子脚本)。
什么是钩子
Hook机制被广泛使用于系统开发和应用程序框架,是为软件提供可扩展性的一种手段。Hook机制的一种基本实现是:在主程序/框架代码控制流上的某些节点调用一个约定的函数,扩展代码则通过重写这个约定的函数来实现在特定时机的扩展功能。
TortoiseSVN客户端的钩子有哪些
作为一种需要编译后运行的软件,TortoiseSVN以调用用户配置的外置脚本(比如批处理文件等)的形式实现hook,而非在代码中加入扩展函数。TortoiseSVN为SVN中使用频度最高的两个操作commit和update提供了六个“钩子”:
- start-commit: 在用户选择commit功能,而commit对话框出现之前被调用。
- pre-commit: 在用户在commit对话框上选定将要提交的文件并写好日志,点击提交,而客户端向SVN服务器发送数据之前。
- post-commit: 无论提交是否成功,在提交过程完成后,post-commit hook将被调用。
- start-update: 在update-to-revision对话框出现之前被调用。
- pre-update: 在用户确认更新,而实际向服务器取回数据的动作发生之前被调用。
- post-update: 无论更新是否成功,在更新完成之后被调用。
在调用任何一个钩子脚本的时候,TortoiseSVN会将此时可用到的信息作为参数传入脚本中。比如当前工作路径,影响到的文件,版本,可能的错误信息等等。
为什么需要添加自动检查的功能
在游戏开发团队里,有程序、美术、策划,尤其是美术和策划经常会无意地漏提交资源的.meta文件到SVN,所以需要一些除了态度以外更好的办法来对将要提交的代码进行必要的检查,以帮助开发者避免这种让人心烦的麻烦。
怎么添加自动检查的功能
TortoiseSVN的客户端钩子脚本刚好提供了这样一种方便,方法很简单,只要在用户选定将要提交的文件,并在提交发生之前的pre-commit hook上设置一个脚本,用以检查将要提交的资源,如果发现某资源的.meta文件未提交则向TortoiseSVN返回一个错误消息即可。TortoiseSVN提供了设置Hooks的图形界面:
此对话框允许您设置钩子脚本,这些脚本将在你指定的时刻自动执行,这些脚本在客户端本地执行。
关于TortoiseSVN Client Side Hooks的更多信息请参阅TortoiseSVN文档中的相关章节。