博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JScript设置SVN客户端钩子
阅读量:2430 次
发布时间:2019-05-10

本文共 1237 字,大约阅读时间需要 4 分钟。

作者:朱金灿

来源:

 

        关于什么叫SVN hook,请参考这篇文章:,这里不作详述。

 

设置SVN客户端hook的标准做法如下:

1.      选择“Settings”菜单项,如下图:

2.      在Hook Script中填写Hook类型及相关的脚本路径及命名行:

 

         现在我有这样一个需求:当更新RunTimeLib目录时把该目录下的dll文件都拷贝到输出目录下。我已经完成了第一步,写了一个Jscript来实现这个复制操作。

 

第二步当然可以用上面的介绍设置这个hook。但是我比较讨厌图形化的操作,我不想每个加入进来的开发人员都进行这个略带麻烦的设置。我希望使用bat文件或Jscript来一步完成hook设置。

    经过观察,我发现所有的hook信息都保存在注册表HKEY_CURRENT_USER\Software\TortoiseSVN\hooks下,也就是说我只需用脚本把这个注册表项填上hook命名信息就行。然后我写了下面的设置hook的Jscript,代码如下:

 

var WSShell = WScript.CreateObject("WScript.Shell");var strValue;var num = WScript.ScriptFullName.lastIndexOf("\\");// 获取当前路径var strCurPath = WScript.ScriptFullName.substr(0, num);var FileSys = WScript.CreateObject("Scripting.FileSystemObject");try {    var strVC9Key = "HKEY_CURRENT_USER\\SOFTWARE\\TortoiseSVN\\hooks";    strValue = WSShell.RegRead(strVC9Key);}catch (e) {}var strAdd = "";var strDir;strDir = strCurPath+"\\RunTimeLib";if (FileSys.FolderExists(strDir)) {   strAdd =strAdd+ "post_update_hook\n"+strDir+"\nWScript "+strCurPath+"\\UpdateSysDll.js\nfalse\nshow\n";// 写入注册表	WSShell.RegWrite("HKEY_CURRENT_USER\\SOFTWARE\\TortoiseSVN\\", 1, "REG_BINARY");	WSShell.RegWrite("HKEY_CURRENT_USER\\SOFTWARE\\TortoiseSVN\\hooks", strAdd, "REG_SZ");}else {    WScript.Echo("设置hook失败!");  }
     

     经过测试,是可以设置成功的。

转载地址:http://drimb.baihongyu.com/

你可能感兴趣的文章
leetcode104&111.找树的最大深度、最小深度
查看>>
leetcode 22 生成合法的括号组合
查看>>
HTML中chunked解码和gzip解压
查看>>
Leetcode 51&52 - N皇后问题
查看>>
系统调用之sys_call_table(系统调用表)
查看>>
GUN C中__attribute__作用
查看>>
3、系统调用之SYSCALL_DEFINE分析
查看>>
linux的signal_pending及signal
查看>>
0.select 系统调用介绍
查看>>
socket长连接心跳保活实现
查看>>
Java学习1:基本概念及安装
查看>>
Java学习2:创建Java project
查看>>
java学习3:基础语法- 数据类型
查看>>
java学习4:控制语句
查看>>
java学习5:类
查看>>
java学习6:方法
查看>>
python-命名空间和作用域
查看>>
支付宝签名与验签,return_url和通知页notify_url
查看>>
JAVA三个默认类加载器及相互关系
查看>>
JAVA 实例对象创建后的初始化过程
查看>>