svn钩子教程

什么是钩子

钩子其实和回调是一个概念,当某个事情发生时就会调用你提供的方法,利用好SVN钩子可以大大的方便你的开发。
web 开发人员,每次提交了代码都需要手动到服务器更新下代码才能看到效果。
钩子的位置存放在仓库中hook中.

当前svn提供了5种钩子

start-commit

开始一个新提交的通知

提交事务创建完, 并且初始属性设置完成后, 紧接着就开始执行钩子 start-commit. 它的典型用法是作为早期的终止机制, 避免浪费大量的 时间等待一个已经确定最终会失败的提交结束, 提交失败的原因可能是用户 缺少提交权限, 或者是某些提交元数据验证失败.

如果钩子 start-commit 的退出值不为零, 提交过程就会中止, 提交 事务也会被销毁, 任何打印到 stderr 的信息 都会返回给客户端.

常见用法:

  • 访问控制(例如临时禁止向仓库提交修改)
  • 判断用户是否有权限进行提交操作

传递参数:

  1. 代码库路径
  2. 用户名
  3. 以冒号分隔的特性 (capabilities) 列表, 这些特性由客户端传递 给服务器, 包括 depth, mergeinfo 和 log-revprops(log-revprops 在 Subversion 1.5 引入)
  4. 提交事务名 (在 Subversion 1.8 引入)

返回值:

  • 非0则终止

pre-commit

提交即将完成的通知

钩子 pre-commit 在提交事务即将生成一个新的版本号之前被调用. 它的典型用法是禁止内容不符合要求的提交 (例如你的公司可能要求所有 的提交日志消息都要包含来自问题跟踪系统的单号, 或者要求日志消息不 能为空).

如果钩子 pre-commit 的退出值不为零, 提交过程就会中止, 提交事务 也会被销毁, 任何打印到 stderr 的信息都会返回 给客户端.

常见用法:

  • 对提交内容进行检查。如要求 提交必须填写提交信息。

传递参数:

  1. 代码库路径
  2. 提交事务名

返回值:

  • 非0则终止提交,操作回滚。

post-commit

成功提交的通知

事务提交并且新的版本号生成后, Subversion 就会执行钩子 post-commit. 大多数管理员都会利用 post-commit 向团队成员发送关 于新提交的邮件, 或者通知其他工具 (例如一个问题跟踪系统) 有新的提交 生成. 有些管理员还会用 post-commit 触发备份操作.

如果钩子 post-commit 的退出值不为零, 提交过程将 不会 中止, 因为这时候提交已经完成了. 但是, 钩子打印到 stderr 的信息都会返回给客户端, 以 便分析钩子失败的原因.

常见用法:

  • 发送邮件通知,或备份代码库。

传递参数:

  1. 代码库路径
  2. 新版号的整数编号
  3. 已经变成版本号的事务名, 正是该版本号触发了本次钩子的运行.

返回值:

  • 返回值被忽略。

pre-revprop-change

版本号属性即将被修改的通知

钩子pre-revprop-change在版本号属性即将被修改之前调用,这里所说的版本号修改不是通常提交的一部分.和其他钩子不同的是,pre-recprop-change的默认行为是禁止修改版本号属性.为了允许修改版本号属性.pre-revprop-change必须以0作为退出值

如果pre-revprop-change没有退出,或者不可执行,或者退出值不为0,svn都将禁止修改版本号的属性,钩子打印到stderr的信息都会返回给客户端.

常见用法:

  • 保存修订版属性的改变记录。

传递参数:

  1. 代码库路径
  2. 即将被修改的版本号的整数编号
  3. 试图修改版本号属性的已认证的用户名
  4. 即将被修改的版本号属性的名字
  5. 用于描述修改类型的字符: A (新增的), D (被删除的), 或 M (被修改的)

返回值:

  • 非0则终止。

post-revprop-change

版本号属性被成功修改的通知.

钩子 post-revprop-change 在版本号属性被修改完成后立即执行, 这 里所说的版本号修改不是通常提交的一部分. 从前面对钩子 pre-revprop-change 的介绍读者应该可以很容易推断出, 除非提供了 pre-revprop-change, 否则的话 post-revprop-change根本没机会执行. 这个钩子的典型用途是发邮件通知版本号属性被修改了.

如果钩子 post-revprop-change 的退出值不为零, 那么针对版本号属性 的修改将 不会 被中止, 因为这时候修改已经完成了.
但是, 钩子打印到 stderr 的信息都会返回给客户端, 以便分析钩子失败的原因.

常见用法:

  • 发送邮件通知。

传递参数:

  1. 代码库路径
  2. 即将被修改的版本号的整数编号
  3. 试图修改版本号属性的已认证的用户名
  4. 即将被修改的版本号属性的名字
  5. 用于描述修改类型的字符: A (新增的), D (被删除的), 或 M (被修改的)

返回值:

  • 非0则终止。
posted @ 2021-12-08 12:21  冰块好冰  阅读(855)  评论(0)    收藏  举报