Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能。所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有很多。那么SVN的钩子有哪些呢?下面简单介绍下:
服务器钩子:
锁定的2种
1、安装svn客户端TortoiseSVN。2、创建存放自己项目的文件夹,把本地创建好的vue项目代码提交到svn服务器上,不提交nodemodules。3、在本地要存放项目的地方右键svncheckout,填入上一步提交的路径,下载后用vscode打开此文件。
pre-lock
svn第一次提交代码,钩子在每次有人尝试锁定文件时执行。可以防止完全锁定,或者用来创建控制哪些用户可以锁定哪些路径的复杂策略。如果钩子发现已存在锁,也可以决定是否允许用户“窃取”这个锁。
post-lock
在路径锁定后执行。通常用来发送锁定事件邮件通知。
解锁的2种
1、去掉干扰视线的文件。2、项目右键Team,与资源库同步,选择文件(不覆盖的文件),右键选择removefromview。3、选择需要覆盖的文件Team与资源库同步。4、覆盖或更新:选择文件,右键,覆盖更新。5、svn提交,去掉干扰视线的文。
pre-unlock
post-unlock
在一个或多个路径已经被解锁后执行。通常用来发送解锁事件通知邮件。
提交的3种
start-commit
它在提交事务产生前已运行,通常用来判定一个用户是否有权提交。版本库传给该程序两个参数:到版本库的路径,和要进行提交的用户名。如果程序返回一个非零值,会在事务产生前停止该提交操作。如果钩子程序要在stderr中写入数据,它将排队送至客户端。
pre-commit
在事务完成提交之前运行,通常这个钩子是用来保护因为内容或位置(例如,你要求所有到一个特定分支的提交必须包括一个bug追踪的ticket号,或者是要求日志信息不为空)而不允许的提交。版本库传递两个参数到程序:版本库的路径和正在提交的事务名称,如果程序返回非零值,提交会失败,事务也会删除。如 果钩子程序在stderr中写入了数据,也会传递到客户端。
post-commit
它在事务完成后运行,创建一个新的修订版本。大多数人用这个钩子来发送关于提交的描述性电子邮件,或者作为版本库的备份。版本库传给程序两个参数:到版本库的路径和被创建的新的修订版本号。退出程序会被忽略。
属性的2种
pre-revprop-change
因为Subversion的修订版本属性不是版本化的,对这类属性的修改(例如提交日志属性svn:log)将会永久覆盖以前的属性值。因为数据在此可能 丢失,所以Subversion提供了这种钩子(及与之对应的post-revprop-change),因此版本库管理员可用一些外部方法记录变化。作 为对丢失未版本化属性数据的防范,Subversion客户端不能远程修改修订版本属性,除非为你的版本库实现这个钩子。
1 第一步在我们的电脑里面打开myeclipse,右键要提交的项目,选择“Team--->Share Project”2 第二步进去之后,选择“svn”,点击next,3 第三步如果以前提交过,就在下面找到url地址,没有提交,选择“创建新的资源库位置。
post-revprop-change
客户端钩子:
1、在本地仓库创建一个项目;2、在第一次提交代码都需要进行添加,右键项目,选择TortoiseSVN ;3、然后选择add选项;4、通过选择项目内文件哪些需要提交和不需要提交;5、确认上传的项目相关文件和路径,点击ok,即添加完成。
提交的
start commit hook
pre-commit hook
post-commit hook
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。2、其次,在linux命令行中输入:svn commit -m 'commit log' test.txt。3、最后,按下回车键执行shell指令,此时会看到。
更新的
start update hook
pre-update hook
post-update hook
简单说明下:SVN_BINDIR路径为你的SVN服务端程序所在的目录,svnlookchanged -t "%TXN%" "%REPOS%" | findstr "obj$"为比较你提交的文件是否为obj文件(即后缀是否为obj)。
方法如下:1、在本地仓库创建一个项目;2、在第一次提交代码都需要进行添加,右键项目,选择TortoiseSVN ;3、然后选择add选项;4、通过选择项目内文件哪些需要提交和不需要提交;5、确认上传的项目相关文件和路径,点击ok,。
部署方式是将上面的批处理代码保存在pre-commit.bat(必须是这个名字),然后把它放到服务端的版本库的hooks文件夹下。该脚本经测试有效,测试环境为客户端 Win XP + sp3,服务器端:Win Server2008 Enterprise。