SVN服务器搭建和使用(五)
2015-09-28 18:26
141 查看
转自:http://chenxp2032.blog.163.com/blog/static/16527043120136204103592
服务器端获取代码到网站根目录是通过用户每次commit代码时触发post-commit的hook来实现的,因此下面要编写post-commit脚本,该脚本的作用是将版本库中的最新代码检出到网站根目录。
废话少说post-commit脚本如下:
其中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文件中,如果出错,也可以找到出错的原因。
服务器端获取代码到网站根目录是通过用户每次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文件中,如果出错,也可以找到出错的原因。
相关文章推荐
- 小心服务器内存居高不下的元凶--WebAPI服务
- 运维入门
- About SVN
- CentOS 6.5搭建Apache整合SVN 1.8.5服务器(多版本库权限配置)
- CentOS下SVN服务器测试版安装记录
- 如何在本机搭建SVN服务器
- Windows下搭建本地SVN服务器
- Linux5.9无人值守安装
- 数据中心和云未来的十二大趋势
- 用vsftp快速搭建ftp服务器
- Linux快速构建apache web服务器
- 服务器监控策略浅谈
- 如何降低服务器采购成本 原理分析
- 建议的服务器分区办法
- 服务器托管六大优势分析
- Erlang实现的一个Web服务器代码实例
- 服务器技术全面解析
- 保护DNS服务器的几点方法小结
- 我国成为全球第二大服务器消费国