如何实现svn提交后,网站自动更新

目标就是,远端的具有公网地址的服务器,充当着svn服务器功能,同时,为了更方便团队成员查看Axure生成的原型,启动IIS服务,并如标题所写,当我将生成的原型文件提交到服务器后,通过公网地址可以直接以网页方式,查看生成的原型页面。方便快捷。

Step1 当然是安装svn服务器和TortoiseSVN啦~

实际上,这篇文章是axure如何远程协作的后续文章,而且装VirualSVN Server也没啥难度,总之,装了以后,我们建立了一个用于提交Axure生成原型后的HTML文件的库,保证你的一切配置都可以随时提交不出问题

而TortoiseSVN也是必须的,需要在服务器上安装一份。

Step2 服务器端获取代码到网站根目录

实现是通过用户每次commit代码时触发post-commit的hook来实现的,因此下面要编写post-commit.bat脚本,该脚本的作用是将版本库中的最新代码检出到网站根目录。首先在服务器上某个位置创建IIS所需的网页服务目录,作为网站根目录,配置好目录的权限,这里,有个需要注意的地方,配置iis服务的时候,需要讲默认首页设置成start.html这样,axure的原型浏览的时候是有侧边栏的,否则没有侧边栏。post-commit脚本如下:

@echo on
SET REPOS=%1
SET USER=%2
SET SVN="c:\Program Files\TortoiseSVN\bin\svn.exe"
SET DIR="d:\webroot"
(call %SVN% update %DIR% --username local --password 123 --non-interactive)

svn:这个是svn.exe主程序的目录,通常是上面那个位置,找不到就全盘搜索下
DIR:这个是iis指向的主目录,自己看着放。
下面的语句:–username 后面跟着用户名 –password 后面跟着密码

这里假设我们已经有了一些内容,现在测试下,脚本执行后,看看库的文件,是否出现在我们的webroot目录下,请注意,这个脚本需要在服务器上执行,而且建议在cmd上执行,这样可以看到执行的过程,出问题可以看到(去掉@echo on更好)

如果上面都没有问题,我们就需要将post-commit.bat文件,放到如下目录:

Repositores/test项目名称/hooks  文件夹下

通常repositores目录在d盘根目录,可能根据实际情况稍有不同。

最后,重启服务,或者服务器。。。。

现在我们目光转回我们的工作机上,axure生成的html文件,我们将这个目录的文件提交到服务端的项目中去的时候,打开公网地址,查看运行在iis上的html原型,已经自动变成最新的了。

如果上面都ok,但不好使不自动更新。那看看下面的方法:

TortoiseSVN 提交时 hook 的 post-commit.bat 不执行的解决方法

TortoiseSVN 提交到 VisualSVN Server 时 hook 的 post-commit.bat 不执行的解决方法:
这是因为 bat 文件执行需要权限,而 VisualSVN Server 默认用的是 NETWORK 用户组,该组没有执行 bat 的权限,导致了 post-commit.bat 文件不能执行,解决方法如下:

我的电脑-管理-服务:
将 VisualSVN Server 服务运行于超级管理员权限,然后重启这个服务。
问题到此解决了~!
如果运行不能正常,可以通过下面的方法看到出错信息:
将刚才的post-commit.bat改名为post-commit-run.bat,然后再建一个post-commit.bat的文件,里面写入如下的代码:
call %~dp0post-commit-run.bat %* > %1/hooks/post-commit.log 2>&1
这样运行结果就会被写入到post-commit.log文件中,如果出错,也可以找到出错的原因。

打完收工 相关阅读:axure如何远程协作