zoukankan      html  css  js  c++  java
  • 使用JScript设置SVN客户端hook

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

     

            关于什么叫SVN hook,请参考这篇文章:从传统的 关于SVNHooks(钩子)的使用,这里不作详述。

     

    设置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失败!");  
    }
    

         

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





  • 相关阅读:
    mysql 加入列,改动列,删除列。
    C语言中的static 具体分析
    [Python网络编程]gevent httpclient以及网页编码
    iOS学习之 plist文件的读写
    数据库设计中的14个技巧
    最简单的基于FFMPEG的封装格式转换器(无编解码)
    一次重要的爱情婚姻抉择,您怎么看?
    2014年到期的myeclipse5.5.1注冊码
    24点经典算法
    使用val()方法设置表单中的默认选中项
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470567.html
Copyright © 2011-2022 走看看