您的位置:首页 > 编程语言

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

2014-07-24 18:13 351 查看
系统环境:windows server 2003

web服务器:IIS

 

第一步:svn服务器的安装

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

 

第二步:防火墙配置

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





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





再“确定”使设置生效。

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

 

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

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





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

 

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

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

?
其中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没有权限写入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息