首页 > 其他分享 >svn hooks

svn hooks

时间:2023-08-19 10:32:21浏览次数:36  
标签:svn -- hooks commit root Oct

1svn  hooks 

1.1钩子脚本:

写法就是系统中shell脚本程序的写法

当svn版本库发生改变时候,hooks就会触发相应作出执行命令 ,根据hooks输出或者返回的状态,hooks程序能够以某种方式执行该动作继续执行,停止或者挂起、

-rw-r--r-- 1 root root 2780 Oct 22 17:05 start-commit.tmpl

[root@localhost hooks]# pwd

/application/svndata/sadoc/hooks

[root@localhost hooks]# ll

total 36

-rw-r--r-- 1 root root 1977 Oct 22 17:05 post-commit.tmpl

-rw-r--r-- 1 root root 1638 Oct 22 17:05 post-lock.tmpl

-rw-r--r-- 1 root root 2289 Oct 22 17:05 post-revprop-change.tmpl

-rw-r--r-- 1 root root 1567 Oct 22 17:05 post-unlock.tmpl

-rw-r--r-- 1 root root 3426 Oct 22 17:05 pre-commit.tmpl

-rw-r--r-- 1 root root 2410 Oct 22 17:05 pre-lock.tmpl

-rw-r--r-- 1 root root 2786 Oct 22 17:05 pre-revprop-change.tmpl

-rw-r--r-- 1 root root 2100 Oct 22 17:05 pre-unlock.tmpl

-rw-r--r-- 1 root root 2780 Oct 22 17:05 start-commit.tmpl

[root@localhost hooks]#

对每种subversion版本库支持的钩子都有一个模板,通过查看这些脚本的内容,我们可以看到 的是什么事件触发了脚本以及如何给脚本传递数据

同时,这些模板也是如何使用这些脚本,结合subversion支持的工具来完成任务的例子。

要实际安装一个可用的钩子,你需要在repo/hooks 目录下安装一些与钩子同名的可执行的程序或者脚本

注意:

由于安全原因,subversion版本库在一个空环境中执行钩子脚本就是没有任何环境变量,甚至没有$PATH或者%PATH% 由于这个原因,许多管理员会感到困惑,  他们的钩子脚本手工运行时正常,可以在subversion中却不能运行。 要注意,必须在你的钩子中设置好“环境变量”或者为你的程序制定好“绝对路径”

1.2 svn的hooks模板

1.2.1常用的钩子脚本

post-commit        在提交完成成功创建版本之后执行该钩子,提交已经完成,不可更改,因此,本脚本的返回值被忽略提交完成时候出发事务

pre-commit        提交完成触发执行该脚本  

start-commit       

在客户端还没有向服务器提交数据之前,即还没有建立  subversiontransaction之前执行该脚本

1.3 svn hooks生产环境应用场景举例

pre-commit 

限制上传文件大小扩展名及大小,控制提交要输入的信息等、 

post-commit 

svn 更新自动周知,MSN,邮件短信周知

svn更新触发checkout程序,然后实时rsync送到服务器等

1.3.1 svn钩子生产应用实战。 

案例一:rsync与svn钩子结合实现数据同步某企业小案例 

a,建立同步web目录:


[root@localhost hooks]# mkdir  -p  /data/www

b,将svn中内容checkout到WEB目录一份

[root@localhost www]# svn co svn://192.168.2.48/sadoc  /data/www/ --username=wyb  --password=123456

[root@localhost www]# ls

a.html  b.html  c.html   svn.txt  ww.txt

修改hooks脚本,进行同步

chmod 755 /application/svndata/sadoc/hooks/post-commit

[root@localhost svndata]# more /application/svndata/sadoc/hooks/post-commit

#!/bin/bash

REPOS="$1"

REV="$2"

export LC_CTYPE="en_US.UTF-8"

export LC_ALL= 

LOGPATH="app/log"

[! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p

##update content from svn 

SVN=/usr/bin/svn

$SVN  update --username wyb --password 123456 /data/www/

if [ $? -eq 0 ]

then

/usr/bin/rsync  -az  --delete  /data/www/   /tmp/

fi

[root@localhost svndata]# touch wwwwwwwwwwwwwwwww

[root@localhost svndata]# svn add wwwwwwwwwwwwwwwww 

A         wwwwwwwwwwwwwwwww

[root@localhost svndata]# svn commit -m "wwwwwwww"

Adding         wwwwwwwwwwwwwwwww

Transmitting file data .

Committed revision 13.

[root@localhost svndata]# svn  ls   svn://192.168.2.48/sadoc/   --username=wyb  --password=123456  --verbose

13 wyb                   Oct 23 15:11 ./

9 wyb                15 Oct 23 11:34 a.html

12 wyb                 0 Oct 23 15:09 asd.txt

7 wyb                 0 Oct 23 11:28 b.html.txt

8 wyb                 0 Oct 23 11:30 c.html.txt

11 wyb                 0 Oct 23 15:08 hh.txt

1 wyb              8011 Oct 23 09:49 svn.txt

4 wyb                 0 Oct 23 10:37 ww.txt

13 wyb                 0 Oct 23 15:11 wwwwwwwwwwwwwwwww

[root@localhost svndata]

[root@localhost svndata]# ls /tmp/

a.html  asd.txt  b.html.txt  c.html.txt  hh.txt  svn.txt  ww.txt  wwwwwwwwwwwwwwwww


写钩子脚本的注意事项:

a,钩子脚本的权限要允许svn执行,一般可以设置 chmod 755 post-commit 

b,钩子脚本尽可能定义环境变量,主要是用过的命令的路径,因为svn考虑安装的问题,不会调用系统环境变量,所以如果发现手动执行post-

commit没有问题,但是自动还有可能无法执行 

c,这个笔记的案例脚本,在svn update之前先要手动checkout一份出来,还有尽可能要加上用户密码,如果只是手动一样会更新,但是如果触发可能就会不能更新

#####################################################

2SVN 远程同步程序代码到远端的WEB服务器参考方法

####################################################### 

案例二:

利用pre-commit 限制上传文件扩展名及大小.

###############################################################

2.1代码上线的解决方案,案例

2.1.1小型格式的代码上线案例

svn  hooks_svn

2.2 中型企业上线解决方案:

svn  hooks_html_02

2.3大型企业上线解决方案:

ITIL  BSWx

svn  hooks_服务器_03

集群环境中分批更新

代码上线解决方案注意事项:

1,上线的流程里,办公测试环境---》IDC测试环境----》正式生产环境,所有环境软件版本均应统一,否咋后患无穷;

2,开发团队小组办公内部测试环境(该环境由开发小组维护,或者定时自动更新代码),代码有问题返回给某个开发人员

3,有专门的测试工程师,程序有问题直接返回给开发人员

4,IDC测试有测试和运维参与,叫IDCtest,进行程序压力测试,有问题直接返回给开发人员。无问题上生产环境

5,数台服务器代码分发上线方案例子(Java程序)::::::

a,假设同业服务器有6台,分为2组,A组三台,B组三台,先对A进行平滑下线,B组正常提供服务,避免影响业务

b, 下线是通过脚本将A组的服务器从RS池(LVS,NGINX,HAPROXY,F5)等负载均衡器平滑提出,避免负载均衡器将请求送给A组服务器,(此时在流量低峰期)

标签:svn,--,hooks,commit,root,Oct
From: https://blog.51cto.com/u_15130867/7147203

相关文章

  • SVN版本控制
    1、版本控制管理工具SVN详解1.1什么是SVN(subversion)  SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们可以把任意一个时间点档案恢复到想要的某一个旧版本,当然......
  • [React Typescript] Discriminated Tuples in Custom Hooks
    import{useEffect,useState}from"react";exporttypeResult<T>=|["loading",undefined?]|["error",Error]|["success",T];exportconstuseData=<T,>(url:string):Result<T>=>......
  • 一个 git 仓库下拥有多个项目的 git hooks 配置方案
    前言通常情况下,一个git仓库就是一个项目,只需要配置一套githooks脚本就可以执行各种校验任务。对于monorepo项目也是如此,monorepo项目下的多个packages之间,它们是有关联的,可以互相引用,所以当成一个项目也没问题。但是也有一种情况,一个git仓库下的多个项目之间是彼此......
  • 版本管理软件svn
    IT项目管理中,svn常常被用于版本控制和团队协作开发。其中,版本控制工具除了svn,还有cvs、git,三种工具;各有其自身特点,cvs->svn->git的发展顺序。svn是subversion的简称,是一个开放源代码的版本控制系统,下载及如何安装配置网上有很多教程,其中大多数情况下我们都只需要安装客户......
  • SVN 不显示红绿图标问题解决方案
    本地文件夹我们先在桌面或者资源管理器中鼠标右键打开设置  选择IconOverlays(图标覆盖) Status cache(状态缓存)选择‘Shell’ 接着选择IconOverlays(图标覆盖)下的IconSet(图标集)  选择应用然后确认,重启生效     ssh等方式挂载的远程磁盘......
  • SVN打开文件报错
    问题描述:'D:\WorkSpace\vvvvv\XXXXXXX-K3Cloud'isalreadylocked.“ 原因分析:上一次异常操作了。解决方案:找到项目目录:右键打开   ......
  • svn add代码时,忽略node_modules
    1.选中项目,右键,选择TortoiseSVN =>  Properties2.点击New,选择Other 3.Propertyname:选择svn:global-ignores 在Propertyvalue中输入:.idea*.iml.svnvcs.xmlworkspace.xmlmodules.xmlmisc.xml,,(要忽略上传的文件后缀名),点击OK 4:再点击new选择other选择sv......
  • SVN安装-win
    下载路径https://sourceforge.net/projects/tortoisesvn/files/1.14.5/Application/TortoiseSVN-1.14.5.29465-x64-svn-1.14.2.msi/download安装的时候要将命令行工具安上-否则IDEA会报错配置IDEA参考:https://blog.csdn.net/i_nclude/article/details/103768412......
  • SVN服务器部署
    SVN服务器安装与配置[SVN安装](SVN安装|菜鸟教程(runoob.com))SVN创建版本库linux下搭建SVN服务器完全手册官方文档一、安装详见教程:https://www.runoob.com/svn/svn-install.html二、创建版本库新建一个目录用于存储SVN所有文件#mkdir/home/svn新建一个......
  • pytest---hooks获取到用例执行结果(pytest_runtest_makereport )
    前言自动化测试用例在执行完成后,我们想要很清楚的查看到测试用例的执行结果,我们可以通过pytest中的hooks来进行获取吗,其中pytest中存在多个hooks的函数,小编今天先简单介绍其中一种,通过pytest_runtest_makereport 获取自动化测试用例的执行情况获取用例结果pytest_runtest_......