SVN利用钩子实现代码同步到web目录

系统环境:windows server 2003

web服务器:IIS

 

第一步:svn服务器的安装

         由于使用的是windows服务器,所以我选择了最方便配置的VisualSVN服务器。到VisualSVN官网上下载VisualSVNmsi安装包,在windows服务器上安装,一路安装完成。

 

第二步:防火墙配置

         打开“控制面板>Windows防火墙”。选择“例外”,打开“添加端口”

svn服务的默认端口3690添加到例外列表中,点击“确定”[下图]


再“确定”使设置生效。

同上述方法把https/443端口加入防火墙例外列表,因为svn有两种访问方式svn协议和https协议。

 

第三步:测试svn服务是否已经畅通

         此处不讲svn的使用等等,不懂的自己百度。打开VisualSVN服务器在“Repositories”上右击新建版本库test。然后在“Users”上右击新建用户,此处可以建两个用户一个留给服务器端检出代码使用。另一个为在客户端测试使用。暂定服务器端用户local密码123

客户端代码检出测试,代码检出成功。添加文件到目录中提交测试,提交成功。Svn服务已经成功搭建。

 

第四步:服务器端代码部署配置

服务器端获取代码到网站根目录是通过用户每次commit代码时触发post-commithook来实现的,因此下面要编写post-commit脚本,该脚本的作用是将版本库中的最新代码检出到网站根目录。首先在服务器上某个位置创建目录wwwtest作为网站根目录,配置好目录的权限,为了方便我使用的是最高权限,对于外网限制严格的长江大学来说开发期的网站根目录设置最高权限是无伤大雅的,待到开发完毕再修改相应的权限便可。废话少说post-commit脚本如下:

?
1
2
3
4
5
6
@ echo on
SET REPOS=%1
SET USER=%2
SET SVN= "D:\Program Files\TortoiseSVN\bin\svn.exe"
SET DIR= "C:\Users\rex\Desktop\test"
(call %SVN% update %DIR% --username local --password 123 --non-interactive)

其中SVN变量是svn.exe主程序的路径,DIR为代码检出目录(即后面要用的wwwtest网站根目录)在服务器端的话可能并不在TortoiseSVN下,而是在VisualSVN的某个目录下,具体位置自己找。脚本编写完成后保存为post-commit.bat

对服务器端的网站根目录[上面提到的wwwtest目录]使用TortoiseSVN(随自己的习惯选择软件)执行首次的checkout命令。下面测试上述脚本的的正确性:首先在客户端通过svn上传一些文件到svn服务器,到服务器端执行上述脚本文件post-commit.bat。进入test目录检查是否将刚上传的文件导出到了wwwtest目录。(PS:若是用cmd执行post-commit.bat可以看到提示信息,能够很明确的看到是否执行成功)用脚本导出成功。下面将post-commit.bat脚本拷贝到服务器的Repositores/test/hooks文件夹下。重启svn服务,从客户端commit更新到服务器,那么网站根目录下面将会同步更新。

 

第五步:配置iis服务器,使wwwtest网站生效

         打开iis管理新建网站,将网站根目录指向服务器上wwwtest目录配置好网站各项参数,启动网站,访问测试成功。

配置完成!

以上转载于:http://my.oschina.net/duguying/blog/128877


注意的地方:

服务器上要安装TortoiseSVN,而且wwwtest网站目录下要checkout一份。

如果出现以下错误,

post-commit hook failed (exit code 1) with output:
svn: E120171: Unable to connect to a repository at URL 'https://xxxxx:443/svn/test'
svn: E120171: Error running context: An error occurred during SSL communication

进入TortoiseSVN\bin\visual svnserver.exe 注意是apache.羽毛图表那个.然后修改其权限SYSTEM权限.因为默认的network service没有权限写入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值