Subversion实现原理介绍及钩子的使用

这里不过多介绍svn的安装、配置、使用。介绍一下Subversion的原理和工作机制。

一、实现原理:Subversion是一种集中的分享信息的系统,它的核心是版本库,它存储所有的数据,版本库按照文件树形式存储所有数据,包括所有的文件和目录。任意数量的客户端可以连接到版本库,读写这些文件,通过写数据,别人可以看到这些信息。通过读数据,别人可以看到版本的修改。

二、工作机制

1、每个工作拷贝都会保留一份基准版本。

2、只要在该基准版本有过修改,所属的本层文件以及所有的父级文件夹都会呈现出来修改标志。

3、update成功时,基准版本会变成服务器的head版本。

4、如果提交成功,服务器的head版本变为用户提交基准版本。

5、revert操作都是将工作区恢复到基准版本。

6、merge操作即是对两个不用的版本数进行比较,然后将不同应用拷贝到另一个版本数中

三、svn的pre-commit钩子

 #!/bin/sh
 #自动同步钩子
 REPOS="$1"
 REV="$2"
    
 export LANG=en_US.UTF-8
 SVN=/usr/bin/svn
 WEBDIR=/var/www/webroot   
 $SVN update $WEBDIR --username dev-user --password dev123 -- no-auth-cache 2>1 /root/svn_post_commit.log

四、svn的post-commit文件做提交时语法检查和svn log检验

#!/bin/sh
REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook

LOGMSG=`/usr/bin/svnlook log -t "$TXN" "$REPOS"|grep "[a-zA-Z0-9]"|wc -c`
if [ "$LOGMSG" -lt 20]; then
    echo $LOGMSG 1>&2
    echo -e "\nmust input log message and length larger than 20" 1>&2
    exit 1
fi

PHP="/usr/bin/php"
FILES=$($SVNLOOK changed -t "$TXN" "$REPOS" | awk ‘/^[AU]/ {print $NF}‘)
HASERROR=0
for FILE in $FILES; do
    CONTENT=$($SVNLOOK cat -t "$TXN" "$REPOS" "$FILE")
    if echo "$CONTENT" | grep -q $‘var_dump‘; then
        echo "######Debug Code found :$FILE#########" 1>&2
        echo "Please remove var_dump from $FILE" 1>&2
        HASERROR=1
    fi
    if [[ "$FILE" =~ \.(php)$ ]]; then
        MESSAGE=$(echo "$CONTENT" | $PHP -l 2>&1)
        if [ $? -ne 0 ]; then
            echo "######Error found :$FILE#########" 1>&2
            echo "$MESSAGE"  1>&2
            HASERROR=1
        fi
    fi
done
if [$HASERROR -eq 1]; then
    exit 1
fi
时间: 2024-10-14 06:37:54

Subversion实现原理介绍及钩子的使用的相关文章

Traceroute原理介绍

一.路由追踪 路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP. 二.ICMP协议 Internet控制报文协议(internet control message protocol),它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息.这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用. 日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下

【spine】原理介绍和程序实现

突然间,微博上被@了,一看原来是之前的关于介绍 spine 的文章引起的.然后就是一阵惭愧,又开了一坑,然后就木有了.虽然,一直在研究 spine,但是的确没写下来相关的内容.于是,赶紧,补了一些内容. 官网内容转发,没啥技术含量.我自己写的运行库也完成了,虽然还需要打磨,但是比官方的更符合2dx 的风格.做了许久之后,对 spine 的理解更深了一点,然后就胡乱介绍下设计思路和为什么这么做. 概念 先来介绍下 spine 中的一些术语和概念 Bone 骨骼 spine 是骨骼编辑器,所以骨骼是

内存分析_.Net内存原理介绍

内存原理介绍 1.       .Net应用程序中的内存 1.1.Net内存类型 Windows使用一个系统:虚拟寻址系统.这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上.其实际结果是在32位的Windows操作系统中,每个进程都可以使用4GB的内存,当然,64位机这个数字就更大了,在这4GB的内存中存储着可执行代码.代码加载的DLL和程序运行的所有变量,这4GB的内存成为虚拟地址空间或虚拟内存.在.Net中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆. C#将数据分为2

03 Yarn 原理介绍

Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理 Hadoop的1.X架构的介绍 在1.x中的NameNodes只可能有一个,虽然可以通过SecondaryNameNode与NameNode进行数据同步备份,但是总会存在一定的时延,如果NameNode挂掉,但是如果有部份数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题. 包含两层: Namespace l 包含目录.文件以及块的信息 l 支持对Namespac

04 MapReduce原理介绍

大数据实战(上) # MapReduce原理介绍 大纲: * Mapreduce介绍 * MapReduce2运行原理 * shuffle及排序 定义 * Mapreduce 最早是由google公司研究提出的一种免息nag大规模数据处理的并行计算模型和方法.是hadoop面向大数据并行处理的计算模型.框架和平台 * Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(

分布式文件系统FastDFS原理介绍

在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以上要求,这就迫使开发者不得不考虑使用其他方式解决此类问题.分布式文件系统就在这样迫切的需求下孕育而生. 今天为什么把标题定为“分布式文件系统”呢?是因为我想通过此次分享(FastDFS原理介绍),和大家去做更多关于分布式文件系统的研究和分享.我想这项研究应该会是一个“系列”性的专题.在本文之后还计划

DNS原理介绍和具体搭建DNS

DNS (Domail Name Server,域名服务) 一.DNS概述     DNS 是一种 C/S 架构,实现域名解析.服务端监听在 UDP/53 和 TCP/53 号端口.主要主机名与 IP 地址之间的名称解析. 所谓的名称解析:简单的来说是将一种名称转换为另一种名称.通常是用户名和 IP 地址之间的转换.它们之间是通过解析库来实现的.像 /etc/passwd 文件就是一种用户名和UID之间的一种解析库. 在 Linux 操作系统中,服务端协议的实现是 bind 软件,客户端通过调用

grep正则表达式原理介绍及应用实例

应用背景:我们刚刚添加了一个用户Luffy,但是不知道他的默认shell是什么. 问题:如何取出一个用户的默认shell? 解决方法: #grep '^Luffy\>' /etc/passwd | cut -d: -f7 /bin/bashf 通过上面的方法,我们就得到了Luffy这个用户的默认shell 文本搜索工具:就是要根据用户指定的文本模式,逐行的进行匹配,最终得到符合文本模式的行 grep是一个强大的文本搜索工具,下面我们就介绍一下grep的语法: grep [OPTIONS] PAT

高性能消息队列 CKafka 核心原理介绍(上)

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:闫燕飞 1.背景 Ckafka是基础架构部开发的高性能.高可用消息中间件,其主要用于消息传输.网站活动追踪.运营监控.日志聚合.流式处理.事件追踪.提交日志等等需要高性能的场景,目前已经上线腾讯云.Ckafka完全兼容现有的Kafka协议,使现有Kafka用户可以零成本迁入Ckafka.Ckafka基于现有的Kafka进行了扩展开发和优化,为了方便用户理解Ckafka本文也将对Kafka的实现原理进行较为详细的介绍. 2.Kaf