您的位置:首页 > 其它

SVN服务器搭建和使用(五)

2015-09-28 18:26 141 查看
转自:http://chenxp2032.blog.163.com/blog/static/16527043120136204103592

服务器端获取代码到网站根目录是通过用户每次commit代码时触发post-commit的hook来实现的,因此下面要编写post-commit脚本,该脚本的作用是将版本库中的最新代码检出到网站根目录。

废话少说post-commit脚本如下:
@echo on
SET REPOS=%1
SET USER=%2
SET SVN="D:\Program Files\TortoiseSVN\bin\svn.exe"
SET DIR="C:\Users\rex\Desktop\test"
(call %SVN% update %DIR% --username local --password 123 --non-interactive)


其中SVN变量是svn.exe主程序的路径,DIR为代码检出目录(即后面要用的wwwtest网站根目录)在服务器端的话可能并不在TortoiseSVN下,而是在VisualSVN的某个目录下,具体位置自己找。脚本编写完成后保存为post-commit.bat。
post-commit脚本2:

@echo
off

SET REPOS=%1

SET REV=%2

SET DIR=%REPOS%/hooks

SET PATH=%PATH%;

SET WORKING_COPY=D:\AppServ\vhost\abc.com\url_home

svn update %WORKING_COPY% –username 用户名 –password 密码

post-commit脚本3:

@echo
off

SET WORKING_COPY=D:/ww

"D:\Program Files\VisualSVN Server\bin/svn.exe" update %WORKING_COPY% --quiet --username

用户名 --password
密码

以上的post-commit都可以执行,具体使用哪个可以自己决定,或者亲自试一试。

对服务器端的网站根目录[上面提到的wwwtest目录]使用TortoiseSVN(随自己的习惯选择软件)执行首次的checkout命令。下面测试上述脚本的的正确性:首先在客户端通过svn上传一些文件到svn服务器,到服务器端执行上述脚本文件post-commit.bat。进入test目录检查是否将刚上传的文件导出到了wwwtest目录。(PS:若是用cmd执行post-commit.bat可以看到提示信息,能够很明确的看到是否执行成功)用脚本导出成功。下面将post-commit.bat脚本拷贝到服务器的Repositores/test/hooks文件夹下。重启svn服务,从客户端commit更新到服务器,那么网站根目录下面将会同步更新。

另:

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文件中,如果出错,也可以找到出错的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svn 服务器