svn配置钩子更新网站目录 每次提交 程序会卡在正在发送文件 有人说是 脚本有问题 手动执行脚本没有问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn配置钩子更新网站目录 每次提交 程序会卡在正在发送文件 有人说是 脚本有问题 手动执行脚本没有问题相关的知识,希望对你有一定的参考价值。

参考技术A 把报错信息发上来看看。
如果报错说被某个钩子阻止,就检查那个钩子是否有问题。如果那个钩子手动执行没问题,最常见的原因的就是path路径问题,一般把钩子里的命令行都改成绝对路径就OK了。追问

注释的部分为有问题的  手动没有问题  但是没有注释的部分 为现在的bat  执行正常

追答

既然现在正常了,现在的bat其实不用那么长,前4行set后面都没有用到,可以删除

如果有兴趣的话,你可以把注释掉那行尝试改成这样试试看(如果操作系统是32位的话):
c:\progra~1\tortoi~1\bin\svn update e:\data\web1
如果是64位操作系统,试试这个:
c:\progra~2\tortoi~1\bin\svn update e:\data\web1

或者简单改成这样:svn update e:\data\web1 应该也可以

追问

svn update e:\data\web1 这是不执行的 手动执行可以 但提交钩子不生效

追答

那说明就是path路径的问题,用脚本运行的时候操作系统找不到svn这个命令,所以在脚本里写成绝对路径就OK了

关于svn钩子

svn钩子

 钩子脚本就是shell的写法,钩子就是被某些版本库事件触发的程序。    

 常用钩子:

  post-commit:在提交完成成功创建之后执行该钩子。(提交已经完成,不可更改)

   更新之后,通过邮件、微信通知

   更新触发checkout程序、然后推送到服务器

  pre-commit:提交完成前触发执行该脚本。

   限制上传文件的大小和拓展名,控制提交要输入的信息

下面写一个小例子:

 rsync与svn钩子结合实现数据实时同步到服务器

      1、建立同步web目录

    mkdir /data/www

  2、将svn中内容checkout到web目录中

    svn co svn://ip/sadoc /data/www --username=syk --password=syk123

  3、设置钩子

    cp post-commit.tmpl post-commit

  4、编写脚本

    1)、> post-commit

    2)、chmod 700 post-commit

    3)、vim post-commit添加:

      #!/bin/bash

      REPOS="$1"

      REV="$2"

      export LANG=en_US.UTF-8

      LOGPATH="/tmp/log"

      [ ! -d ${LOGPATH} ]  && mkdir ${LOGPATH} -P

       SVN=/usr/bin/svn

       $SVN update --username syk --password syk123 /data/www

      if [ $? -eq 0 ]

      then

      /usr/bin/rsync -az --delete /data/www /tmp/

      fi

   5、测试

    这时我们在svn上新建一个文件并提交,在tmp目录下就可以看到有这个新建的文件。




本文出自 “Linux” 博客,请务必保留此出处http://syklinux.blog.51cto.com/9631548/1792475

以上是关于svn配置钩子更新网站目录 每次提交 程序会卡在正在发送文件 有人说是 脚本有问题 手动执行脚本没有问题的主要内容,如果未能解决你的问题,请参考以下文章

SVN 钩子操作-同步更新web目录

[svn hooks]识别指定目录svn更新钩子

SVN设置更新钩子

配置SVN的hooks功能自动更新代码

关于svn钩子

svn上传文件钩子