先说这个方式的一个弊端,那就是服务器端这边代码不能与svn服务器出现冲突,一旦冲突就失效。
实现原理是,利用svn版本库,hooks目录的bat钩子开展工作。
共在hooks目录下建立3个文件如下:
post-commit.bat 作用是:钩子入口!postcommit.log 作用是:记录最后一次执行的结果(可以记录最后一次报错)建立一个空文件就好!post-commit-run.bat 作用是:自动更新的核心部分!post-commit.bat的代码是:
call %~dp0post-commit-run.bat %* > %~dp0postcommit.log 2>&1
post-commit-run.bat的代码是:
@echo off
SET REPOS=%1SET REV=%2
SET DIR=%REPOS%/hooksSET PATH=%PATH%;
SET WORKING_COPY=D:/Websites/wwwsvn update %WORKING_COPY% --username your_name --password your_pwd
注意填写客户端地址、用户名和密码,这里的是:D:/Websites/www、admin和123456.
hooks目录地址:配置密码那边,如图
另外一个别人的博客,大同小异,只是比较简单,没有做日志而已
在Windows 03 Server上搭建了 VisualSVN 服务器,想要设置成当提交到SVN中的任何修改都同步更新到本机服务器上的WEB目录下。
根据网上各种版本的参考,基本上上使用svn自带的hook功能实现:
在SVN 项目版本的存储目录的hooks 目录中,建立一个post-commit.bat 文件:
@echo off
SET REPOS=%1SET REV=%2
SET DIR=%REPOS%/hooksSET PATH=%PATH%;
SET WORKING_COPY=D:/Websites/wwwsvn update %WORKING_COPY% --username your_name --password your_pwd
注意事项:
1.需要将SVN服务器的bin目录加入到path路径中,加入后,未重启,在命令行下path值立即生效,但是SVN服务器却无法找到,总是提示:
警告: post-commit hook failed (exit code 1) with output:'svn' 不是内部或外部命令,也不是可运行的程序或批处理文件。
2.需要设置SVN服务对文件桌面系统权限,否则会报无法读写文件的错:
选择本地系统账户,并勾选 允许服务与桌面交互
OVER
ORG: