经过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步。操做比较烦琐,并且效率也低。使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题。因为测试机器与SVN库都在同一台机器里,因此处理起来比较方便。linux
svn项目下面有hooks目录,里面存放的是所有的钩子脚本的模板web
post-commit.tmpl 为客户端commit提交后触发windows
如下是windows和linux下自动更新版本库的方法:服务器
在SVN 项目版本库的存储目录下的hooks 目录,新创建一个post-commit.bat 文件:svn
windows:post
@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING=E:/www/o135
svn update %WORKING% --username o135 --password o135123测试
注意:以上方法必须把SVN服务器安装目录下的bin加入到path路径(环境变量)中。SVN经过setup进行安装,默认会将bin目录增长到path路径中,若是经过压缩包进行安装,必需要手动增长。spa
要想知道此脚本是否出错,可在cmd命令行里输入:C:\Documents and Settings\Administrator>e:/svn/hooks/post-commit.bat 进行测试。出现如下信息则代表脚本成功执行:.net
C:\Documents and Settings\Administrator>e:/svn/hooks/post-commit.bat
正在升级 ‘E:\www\o135′:
版本 15。命令行
红色部分是版本库的位置,你们按实际位置进行修改。
之后无论那台机器,只能经过svn commit命令,都会触发此脚本,自动同步web目录中。
linux:
linux下原理跟windows是同样的。只是新建的文件名不同。
在SVN 项目版本库的存储目录下的hooks 目录,新创建一个post-commit文件:
vi post-commit
增长如下代码:
#!/bin/sh
WEB=/home/data/o135
export.UTF-8
svn update $WEB --username o135 --password 'o135123'
保存,退出。。
给予此脚本的权限:
chmod 777 post-commit
测试一下,看脚本是否有权限问题
./post-commit
之后每次客户端提交操做,就会自动运行该脚本。