正在加载...

Windows 2003下配置SVN自动备份、发布网站

May 31st, 2008

环境:

服务端:
操作系统:windows2003
SVN:VisualSVN Server 1.01

客户端:
TortoiseSVN 1.4.7

目的:

网站服务器和SVN服务器在同一台机器上,希望实现在自己的的机器上修改完代码后,直接用TortoiseSVN 提交上去,同时更新网站服务器上的相应文件。

原理:

Subversion是一个强大的版本控制系统,不仅能轻松实现版本库管理的各种功能。更为强大的是提供了一系列的Hook,可以由事件触发来插入自己的执行代码。

如果你有一个SVN库存放在/repos/test下,那么你的hook将被存放在/repos/test/hooks目录下。

在这个hook目录下存放着大量的临时文件。分别对应不同的事件:

  • start-commit - 提交开始时触发,可以用来做权限检查
  • pre-commit - 提交事务之后正式提交之前触发,经常用来检查日志信息。
  • post-commit - 提交成功之后触发.可以用来发送邮件通知,备份版本库等。
  • pre-revprop-change - 版本库中的某个属性发生改变前,可以用来做权限检查
  • post-revprop-change - 版本库中的某个属性发生改变后,可以用来发送邮件通知或记录改变的属性.
  • pre-lock - 锁定文件前发生,可以用来做权限检查
  • post-lock - 锁定文件后发生,可以用来发送邮件通知或记录锁定的文件
  • pre-unlock - 解除锁定文件前发生,可以用来做权限检查
  • post-unlock - 解除锁定文件后发生,可以用来发送邮件通知或记录解除锁定的文件

在这里,我们需要处理的是post-commit事件,也就是说需要在文件提交成功后通知网站更新数据。

步骤:

  1. 安装VisualSVN Server 1.01,整个安装过程非常简单,安装完就可以在windows的管理页面看到了,设置也比较简单。但是安装完默认使用SYSTEM用户来执行,对目录没有写的权限,会导致执行第4步Hook脚本失败,所以还需要修改一下VisualSVN Server服务的登录用户,我这里将其设置为了Administrator

    如图:
  2. 设置网站根目录(如:e:\web) 为SVN工作目录,从版本库下载所有文件
  3. 在hook目录中创建一个文件post-commit.bat (注意:windows下有效的脚本类型可以是,.bat .com .exe 或其他有效的Python脚本,perl脚本),因为不需要太复杂的功能,所以使用bat是最简单的。
  4. 编辑 post-commit.bat 内容为:
     "E:\Program Files\VisualSVN Server\bin\svn.exe" update "e:\web\"  
    这段代码意思是使用SVN从版本库更新网站根目录

Ok,就这么几步,我在设置的时候,由于还不知道VisualSVN Server的执行权限问题,导致每次 commit 后客户端都停止响应,但自己执行 post-commit.bat 又没有什么问题,最后反复查找才发现了问题所在,记录下来,希望能给遇到相同问题的朋友一点帮助。

相关阅读:



google reader 抓虾
bloglines my yahoo
哪吒 鲜果
* 更多订阅本站方式请看 订阅帮助