svn服务端hooks钩子可用于多项目自动同步

废话不多说,直接上post-commit脚本了:

日志会全部记录下来包括同步的文件

vim post-commit

#!/bin/sh
REPOS="$1"                  # 仓库的路径
REV="$2"                    # 新提交的版本号

export LC_ALL="zh_CN.UTF-8"
expor LANG="en_US.UTF-8"

LOGFILE=/var/log/svn-hooks.log    # 钩子脚本的日志
# 脚本的标准输出和标准错误输出都打印到日志文件里
exec 1>>"$LOGFILE"
exec 2>&1

SVN=/usr/bin/svn
SVNUSER=luoxiaoguang
SVNPWD=lxg888
WEBROOT=/usr/local/nginx/html
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")  #提交作者
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")    #提交时的备注信息,不建议用中文

function myecho() {
    echo "$TIME" "$*"
}

myecho "**************************************************************"
myecho "提交版本:$REV 作者:$AUTHOR"
myecho "提交备注:$MESSAGE"
myecho "修改目录:$(echo $CHANGEDDIRS | tr ‘\n‘ ‘ ‘)"

MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的主目录
# 遍历提交的代码目录,同步到WEB服务器上
while [ "$CHANGEDDIRS" != "" ];do
    PROJECT=$(echo $MASTERDIR | awk -F / ‘{print $2}‘)
    myecho "当前项目:$PROJECT"
    # 判断项目文件夹
    if [ "$PROJECT" == "ipengbei" ];then

        WEB=/usr/local/nginx/html/ipengbei

        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
        myecho "同步 $MASTERDIR 到 tyq:$WEBROOT/ipengbei"

        $SVN --non-interactive update $WEB  --username luoxiaoguang --password lxg888

        chmod -R 755 $WEB

    elif [ "$PROJECT" == "ipengbeiweb" ];then

        WEB=/usr/local/nginx/html/ipengbeiweb

        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
        myecho "同步 $MASTERDIR 到 ipbweb_dev:$WEBROOT/ipengbeiweb"

        $SVN update --non-interactive  $WEB  --username luoxiaoguang --password lxg888

        chmod -R 755 $WEB
        chmod -R 777 $WEB/App/Runtime
        chmod -R 777 $WEB/Webconfig
        chmod -R 777 $WEB/UF

        else
        :
    fi
    # 在目录集合里删除已经同步好的目录
    CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR")
    # 获取新的需要同步的主目录
    MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)
done
时间: 2024-08-02 15:16:53

svn服务端hooks钩子可用于多项目自动同步的相关文章

linux svn 服务端搭建

环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用yum安装如下: yum install subversion2. 输入 svn --help可以查看svn的使用方法. usage: svn <subcommand> [options] [args] Subversion command-line client, version 1.6.11.

Windows上安装配置SVN服务端

一.安装包 下载地址:http://subversion.apache.org/packages.html 此处下载Win32Svn版本(32位及64位系统都可用),下载完成后双击.msi文件,然后根据步骤提示安装即可. 二.配置 1.在磁盘上创建一个文件夹,用于保存svn的资源库,比如E:\svndata(后面步骤的操作都基于这个目录). 2.打开cmd,执行以下命令创建资源库(此处假设要开发的项目名为demo): svnadmin create E:\svndata\demo 执行完成后可以

git跟svn 服务端对比

Git已经火了很久,简单的使用也没有问题,但有几个问题一直以来都没有搞清楚:git跟svn有哪些异同,两者相互的优劣是什么,git的分布式怎么理解,为什么有离线提交,,,自己动手,分别看一下服务端跟客户端使用有什么异同,大概也就了解了. 选择的服务端分别是gitlab跟visual svn server. 1.gitlab简单说明: svn是我们比较熟悉的,svn有服务端跟客户端:虽然git是分布式的,但平时我们使用的时候往往都是有一个服务端的,比如gitlab,github等. Gitlab是

阿里云ESC搭建SVN服务端

CentOS7)下yum命令快速安装svn服务端,学习在思考中独孤中度过,在孤独中进取! 01.SVN服务的安装(subversion) 02.ESC安全组策略 1.在线安装svn服务 $ sudo yum install subversion 测试安装是否成功: $ svnserve --version 2. 建立版本库 创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里): $ sudo mkdir -p /svn_root/ 创建版本库

CentOS 7.0版本下安装SVN服务端示例

一.安装部署环境 VMBox虚拟机.CentOS 7系统.4G内存.20Gb存储空间 二.基础环境建立 1.安装VMBox虚拟机: 2.启动VMBox虚拟机,安装CentOS系统[安装过程略,注意root密码]. 3.启动CentOS系统,并登录root账号. 三.CentOS配置工程 配置CentOS网络,虚拟机CentOS可以访问外网.该步骤必须先配置DNS,否则联网更新.下载操作将会报错. 查询网络配置文件所在位置及名称:cd /etc/sysconfig/network-scripts/

使用阿里云服务器搭建svn服务端

前言:我这边使用的是windows server2012 1.svn服务端安装 安装过程与工程创建参考这我篇文章https://www.cnblogs.com/gj-blog/p/9355373.html 2.配置svn服务端 到这一步,你应该已经安装了svn服务端,并且创建了项目工程与用户 2.1先配置VisualSVN Server 点击ok 2.2配置阿里云服务器安全组规则 打开浏览器登录阿里云域名控制台并登录 点击管理 点击本实例安全组 点击配置规则 添加安全组规则 点击确定. 3.连接

SVN服务端安装和仓库的创建

1.安装SVN服务端 双击运行: 点击[next] 勾上复选框,点击[next] 使用默认选项,点击[next] 点击[Standard Edition]建议端口号不用443,因为Vmware占用了,改成其他的. 点击[next],如果出现端口被占用,可以采用以下两种解决办法: 第一种:停止服务中VMWare WorkStation Server服务 第二种:改变svn的端口号. 点击[install] 点击[finish]安装完成.重启计算机! 2.创建仓库 找到SVN的安装目录,在目录中找到

利用SVN的post-commit钩子实现多项目自动同步

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qicheng0211.blog.51cto.com/3958621/1563159 svn的post-commit钩子脚本在每次提交(commit)之后运行,我们可以在这个脚本里实现一些比较实用的功能,比如发送邮件提醒.自动备份版本库,自动同步代码到web服务器等. 这里用post-commit实现多项目自动同步,思路:在svn版本仓库根目录下划分多个项目文件夹,项目组成员在提

linux安装svn服务端不使用apache

一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install subversion 3.测试是否安装成功 /usr/bin/svnserve --version 如提示以下内容,说明已安装成功 -------------------------------------- svnserve,版本1.6.11 (r934486) 编译于Apr 11 2013,17:28:04 版权所有(C) 2000-2009 CollabNet. Subv