windows中svn怎么配置钩子代码?

windows中svn怎么配置钩子代码?,第1张

如果服务器端是windows环境的话,那么钩子实际就是批处理文件(扩展名bat)

这些钩子都存放在服务器端的hooks文件夹内,比较常用的钩子包括pre-commit.tmpl、post-commit.tmpl等,pre-commit.tmpl是当服务器端接收到commit请求的时候自动调用这个钩子,post-commit.tmpl是当完成commit *** 作的时候服务器端自动调用这个钩子,在windows环境下钩子程序的扩展名要改成bat,而不能用tmpl

至于钩子的内容,就看自己的发挥了,你需要熟悉DOS批处理文件的编写技巧,常见的应用比如:当commit完成后,自动调用钩子程序,通过svn update命令,将最新版本发布到服务器上的测试环境中

在网上查了,发现都不对,有哪位大哥大姐知道,告一下。也不提示错误,就是同步不了

利用SVN的POST-COMMIT钩子自动部署代码

我们在开发的过程将代码提交到SVN后使用SVN的hook,通过post-commit脚本,在目

标文件夹根下执行svn update *** 作,将更新内容同步到测试环境,这样开发调试非常方便。

post-commit内容:

--------------------------------------------

#!/bin/sh

#修改为服务编码

export LANG=zh_CN.gb2312

#Set variable

REPOS="$1"

REV="$2"

SVN=/usr/bin/svn

WEB=/data/home/htdocs

LOG=/data/home/auto_svn.log

#update the code from the SVN

$SVN update $WEB --username username --password password --non-interactive

#......................

if [ $? == 0 ]

then

echo "$REPOS" "$REV" >>$LOG

echo `date` >>$LOG

echo "##############################" >>$LOG

fi

-----------------------------------------------

需要注意:

1、需要用export指定编码。

2、需要指定svn全路径。

3、代码CO出来之后,可以进行post-commit脚本的测试了。因为svn的hooks执行的时候不带有任何的环境变量,所以我们不能通过简单的 ./post-commit 进行代码的测试。必须要使用sudo su 等命令切换到svn或者apache服务器运行用户下,用下面的方法进行测试

Python代码

env – ./post-commit

==================================================================================

#!/bin/bash

export LANG=en_US.UTF-8

src=/data/webroot/ask.j1.com ##local checkout directory###

deswebroot=/data/wwwroot/ask

remoteip=210.14.70.4

/usr/local/svn/bin/svn update $src --username webapp --password 969470900eb90baef8b62483a2111a9b | grep -v -i update|awk '{print $2}'| while read chfile

do

if [ -e $chfile ]then

if [ -f $chfile ]then

#chown ftp.ftp $chfile

dfile=$(echo $chfile |sed "s:$src\/::") ###only file name###

rsync -avz -e ssh --exclude-from=/data/svndata/ask.j1.com/exclude-file $src/$dfile root@$remoteip:$deswebroot/$dfile

else

#chown ftp.ftp $chfile

dfile=$(echo $chfile |sed "s:$src\/::")

rsync -auvz -e ssh --exclude-from=/data/svndata/ask.j1.com/exclude-file $src/$dfile/ root@$remoteip:$deswebroot/$dfile/

fi

fi

done

修改服务器上hooks文件夹下的post-commit这个钩子,在里面加上svn update指令,这就可以实现你的需求了

post-commit这个钩子就是在commit完成时自动执行的,如果服务器是windows系统,那么钩子文件名就说post-commit.bat,内容就是一个批处理文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7910184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存