这篇文章主要讲解了“怎么用SVN钩子自动更新项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”怎么用SVN钩子自动更新项目”吧!
<强>使用post-commit更新强>
1。SVN服务器地址:192.168.31.33
2. web服务器地址:192.168.31.34
3. SVN版本库地址:/home/SVN/qxy
4. web项目地址:/home/wwwroot qxy
5。由于SVN和web并不在同一服务器上,所以涉及到ssh登录,并且需要设置免密钥登录
<强>个人SVN同步实现原理强>
1。开发人员本地电脑通过SVN Commit版本到SVN服务器上。
2。SVN服务器post-commit检测到有版本变更,根据其中的定义设置通过ssh方式登录到web服务器执行SVN update操作
3。我需要记录一些信息,所以采用了ssh登录后执行特定 脚本进行更新操作
钩子位置位于SVN服务器/home/SVN/qxy/钩子目录下,默认提供了常用钩子:
(root@docker_server 钩),噢 total 36 -rw-r——r, 1, root root 1977年,Sep , 1, 16:49 post-commit.tmpl -rw-r——r, 1, root root 1638年,Sep , 1, 16:49 post-lock.tmpl -rw-r——r, 1, root root 2289年,Sep , 1, 16:49 post-revprop-change.tmpl -rw-r——r, 1, root root 1567年,Sep , 1, 16:49 post-unlock.tmpl -rw-r——r, 1, root root 3426年,Sep , 1, 16:49 pre-commit.tmpl -rw-r——r, 1, root root 2434年,Sep , 1, 16:49 pre-lock.tmpl -rw-r——r, 1, root root 2786年,Sep , 1, 16:49 pre-revprop-change.tmpl -rw-r——r, 1, root root 2122年,Sep , 1, 16:49 pre-unlock.tmpl -rw-r——r, 1, root root 2780年,Sep , 1, 16:49 start-commit.tmpl
<强>授权SVN服务器面密钥登录到web服务器强>
1。在SVN服务器上生成密钥文件:
ssh-keygen -t rsa
连续回车即可,生成的文件位于/根/sh/下,查看需要ls -a 命令
2。复制密钥文件到web服务器上:
ssh-copy-id 小姐;/root/. ssh/id_rsa.pub , root@192.168.31.34
该操作需要输入web服务器根密码
3。复制完成后/根/sh下会生成一个known_hosts文件,里面记录了授权信息(加密的)
<强>编辑post-commit文件强>
cp post-commit.tmpl post-commit vim post-commit # !/bin/bash “回购=?美元; “牧师=?美元 日志文件=/var/log/svn.log 和“exec 1祝辞;LOGFILE"美元; exec 2祝辞,1 export LC_CTYPE=癳n_US.UTF-8" export LC_ALL=SVNLOOK=/usr/bin/SVNLOOK 时间=$ (date “+ Y % - % - % d % H: % m: % S") 作者=$(美元SVNLOOK author  -r REV 美元;“REPOS"美元) CHANGEDDIRS=$(美元SVNLOOK dirs-changed 回购美元) 消息=$(美元SVNLOOK log  -r REV 美元;“REPOS"美元) , function myecho (), { ,,,echo “TIME"美元;,“$ *“; } myecho “* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”; myecho “提交版本:$ REV AUTHOR"美元; myecho “提交备注:$ MESSAGE" myecho “修改目录:$ (echo CHANGEDDIRS 美元;|,tr & # 39; \ n # 39;, & # 39;, & # 39;)“; , ssh root@192.168.31.34 “/home/svnup.sh"在/dev/null
<>强增加 脚本执行权限强>
chmod 744年,post-commit
<强> web服务器上新建匹配脚本强>
vim /home/svnup.sh , # !/bin/bash 日志文件=/var/log/svnup.log echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻,在美元的在日志文件 echo $ (date +“y % - % - % d % H: % m: % S"),在美元的在日志文件 svn update /home/wwwroot/qxy 在祝辞日志文件 echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;,在祝辞美元日志文件
<强>脚本测试强>
直接在SVN服务器上运行钩子sh post-commit,如果一切正常,对应的两个日志文件中都会生成日志信息,web服务器上虽然没有版本更新,但是也会产生更新的记录
开发电脑推送版本到SVN服务器测试,如果出现错误,会有post-commit的相关提示,一般都是钩子中 命令问题,详细排错即可。