前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >svn利用钩子脚本功能实现代码同步到web目录

svn利用钩子脚本功能实现代码同步到web目录

作者头像
全栈程序员站长
发布2022-07-08 09:02:24
1.4K0
发布2022-07-08 09:02:24
举报
文章被收录于专栏:全栈程序员必看

一、hook简单介绍

为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程

要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。

二、本地机器SVN自动更新

1. export方式(备份)

在使用svn客户端时,有可能需要对某一个版本进行本地备份,比如制作成压缩包进行发布,这时候需要从svn文件夹中提取出内容,去除.svn等隐藏的svn配置文件。最笨的方法拷贝一份出来,然后显示隐藏文件,把所有 .svn文件夹都删掉。在svn菜单中,可以找到export命令,这个命令可以将当前svn目录中的内容干净地导出到指定的目录

例如你版本库的svn访问地址是http://10.30.11.12:8080/svn/project1,你想把这个版本库下的/trunk/web文件夹发布到tomcat上,发布到tomcat的文件夹地址是d:/tomcat/opt/web,svn的管理员用户名是abc,密码是12345,那么这个钩子程序应该就是: svn export http://10.30.11.12:8080/svn/project1/trunk/web d:/tomcat/opt/web –force –username abc –password 12345 –no-auth-cache

注: –force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错 –username abc –password 12345 是自动将用户名和密码作为参数传送进去 –no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑

2.update方式

修改hooks/post-commit

export LANG=en_US.UTF-8 SVN=/usr/bin/svn

STATIC_DIR=/web/root/wwwdeng #注意权限问题SVN update STATIC_DIR –username deng –password 123456 —no-auth-cache

#必须加上–no-auth-cache不然会报错!!

默认使用的shell类型是sh,最好改成bash,sh是bash的子集,centos中sh其实就是软链接到bash

wKiom1VjzKaCE3pRAAFTxyIwIrs242.jpg
wKiom1VjzKaCE3pRAAFTxyIwIrs242.jpg

3.update和export比较

update会生成一个隐藏.svn文件夹,这个文件夹是我们不需要的,当然了,如果整个发布的内容很多的话,建议还是用update,而不用export,因为update只更新有变化的部分,而export将重新导出所有内容,网络消耗比update大。

三、svn实现远程机器自动更新

首先实现A机器通过ssh无密码登陆B机器, 修改A机器的post-commit文件

/usr/bin/ssh -l root 192.168.127.183 “/bin/bash /home/www/svnup.sh”

然后在B机器的/home/www/目录创建svnup.sh可执行文件

/usr/bin/svn update /web/root/code

版本库有提交请求的时候自动会执行post-commit脚本,post-commit脚本通过ssh让远程机器执行shell脚本自动更新svn。

附注:

@echo off并不是DOS程序中的, 而是DOS批处理中的。 当年的DOS,所有操作都用键盘命令来完成, 当你每次都要输入相同的命令时, 可以把这么多命令存为一个批处理, 从此以后,只要运行这个批处理, 就相当于打了几行、几十行命令。

DOS在运行批处理时, 会依次执行批处理中的每条命令, 并且会在显示器上显示, 如果你不想让它们显示, 可以加一个“echo off”

当然,“echo off”也是命令, 它本身也会显示, 如果连这条也不显示, 就在前面加个“@”。

说了这么多, 我觉得非常详细了, 可能你还是不懂。 没有经过DOS时代的人, 想法跟我们是有区别的。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112844.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年10月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档