VisualSVN Server自动发布配置部署svn代码到web目录服务器上线
发布时间:2017-06-23, 11:49:25 分类:Linux | 编辑 off 网址 | 辅助
正文 2202字数 687,592阅读
SVN利用钩子实现代码同步到WEB目录思路:
找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹。在该文件夹中添加一个post- commit文件;当有commit动作发生时(提交到SVN Server时)就会执行这个post-commit文件,在该文件实现数据的复制。
实例:
环境:SVN Server与测试用的Web Server在同一台Windows系统服务器上,SVN Server使用的是VisualSVN,Web Server使用的是Apache。项目的名称为test,客户端使用TortoiseSVN。
首先在apache的www目录下创建一个文件夹,进行checkout,输入需要用户名和密码,将test项目取出到该文件夹中。
找到SVN Server的Repositories目录,在Repositories/test/hooks文件夹中创建post-commit.bat,在其中写入命令:
"C:\Program Files\VisualSVN Server\bin\svn.exe" update "D:\www\test" --quiet --username name --password pwd
(即执行svn update命令,请自行替换用户名和密码)
也可以这样写
@echo off
SET REPOS=%1
SET USER=%2
SET SVN="E:/Program Files/VisualSVN Server/bin/svn.exe"
SET DIR="E:/wamp2/www"
(call %SVN% update %DIR% --username izaodao --password izaodao --non-interactive)
大功告成。
注:
1.web目录下一定要用TortoiseSVN checkout出Repositories的代码
2.
-username izaodao --password izaodao
izaodao替换为登录svn的用户名和密码
在使用中可能会遇到的错误排除 :
1.Error: svn: 解析“D:\www\test”出错,或svn: E020024: Error resolving case of 'D:\www\test"',则有可能是因为目标文件名之后多加了”\”
2.“D:\www\test"或Skipped 'd:\www\test',则可能是因为没有执行步骤提交更新处理文件 即上面提到的.bat文件,svn.exe不认识目标文件夹
3. Working copy 'D:\www\test' is too old,则可能需要使用sven.exe upgrade命令重新整理一下目标文件夹 或者重新安装一个较高客户端版本至少要2.6以上吧
4.还有一个注意问题——Visual SVN Server的权限,否则可能会出现下列错误:
post-commit hook failed (exit code 1) with output:
svn: E155004: Working copy 'D:\www\Test' locked
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
原因是Visual SVN Server服务的执行权限不够,不能对指定目录做读写操作。解决办法,修改Visual SVN Server
简单操作 win+R 运行 services.msc 找到visual svn server 服务 右键属性 登陆面板 设置桌面交互或者管理员权限再试
知识是我们已知的 也是我们未知的 基于已有的知识之上 我们去发现未知的 由此,知识得到扩充 我们获得的知识越多 未知的知识就会更多 因而,知识扩充永无止境
VisualSVN Server 自动发布配置
代码提交到SVN服务器后,自动发布到web测试服务器,免去在web服务器手动更新的操作。
在SVN 项目版本的存储目录的hooks 目录中,建立一个post-commit.bat 文件,内容如下:
@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING_COPY=D:/PHPNOW/vhosts/home/
"E:\Program Files\VisualSVN Server\bin\svn.exe" update %WORKING_COPY% --username name --password pass
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
有过 3 条评论 »
第一步
把web目录设置为工作目录
"D:\Program Files (x86)\VisualSVN Server\bin\svn.exe" upgrade "D:\yiyun_www\test" --quiet --username chiyj --password chiyj
在DOS下执行。
第二步修改文件
D:\yiyun_code\test\hooks下新建文件
post-commit.bat 内容如下
@echo off
SET REPOS=%1
SET USER=%2
SET SVN="D:\Program Files (x86)\VisualSVN Server\bin\svn.exe"
SET DIR="D:\yiyun_www\test"
(call %SVN% update %DIR% --username chiyj --password chiyj --non-interactive)
参考 http://www.cnblogs.com/xiezhengcai/archive/2013/11/27/3445457.html
svn 自动部署到web服务器设置问题
修改服务器上的钩子程序post-commit,将指定要发布的内容的文件夹导出(export)到tomcat目录下就行了
钩子程序post-commit是在执行commit操作后自动执行的,这样每次commit后都自动执行一次导出操作,保持tomcat文件夹内容就是所要发布的内容
---------------------------------------------------------------------------
补充:
例如你版本库的svn访问地址是10.30.11.12:8080/svn/project1,你想把这个版本库下的/trunk/web文件夹发布到tomcat上,发布到tomcat的文件夹地址是d:/tomcat/opt/web,svn的管理员用户名是abc,密码是12345,那么这个钩子程序应该就是:
svn export 10.30.11.12:8080/svn/project1/trunk/web d:/tomcat/opt/web --force --username abc --password 12345 --no-auth-cache
(本人对linux不熟悉,这行指令如有与linux语法不一致的地方,请参考原理自行修改)
说明:
1、--force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错
2、--username abc --password 12345 是自动将用户名和密码作为参数传送进去
3、--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑
4、svn export 是将所指定的url的内容导出到所指定的文件夹去。这里之所以不用update而用export,是因为update会导致生成一个隐藏.svn文件夹,这个文件夹是我们不需要的
当然了,如果整个发布的内容很多的话,建议还是用update,而不用export,因为update只更新有变化的部分,而export将重新导出所有内容,网络消耗比update大。
windows下,配置的svn然后上传了,怎把项目指定上传目录下
同步?楼主的问题描述不是很清楚啊,如果是上传整个项目到svn的版本库中,