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
svn服务端hooks钩子可用于多项目自动同步的更多相关文章
- linux svn 服务端搭建
环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...
- svn服务端安装、权限修改以及客户端的使用
2017-10-1016:10:2 svn服务端安装.权限修改以及客户端的使用 svn服务端.客户端.汉化包下载 http://pan.baidu.com/s/1c1Ogj2C 1.安装服务器端程序( ...
- Linux下安装SVN服务端
安装 使用yum安装非常简单: yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下 ...
- centos6.5 svn服务端搭建
一.前言 Subversion是一个免费的开源的版本管理系统,它是作为CVS(Concurrent Versions System)的取代品出现的.本文简单介绍了Subversion在centos上的 ...
- 最全Linux搭建SVN服务端教程
文章首推 支付宝接口对接 高德地图调用 验证码登录 QQ邮箱登录 今日主题:Linux搭建SVN服务端 简介 相信程序员对SVN还是不陌生的,虽然现在用Git比较多,但是SVN也是用的,SVN可以做代 ...
- svn服务端和eclipse配合使用
今天弄了个svn服务器来做项目的版本控制,讲讲我做的步骤吧 1.安装svn服务端 2.下载subclipse插件 3.将subclipse插件安装到eclipse上,点击Install New Sof ...
- SVN服务端启动解决方案(2013-12-10 记)
解决每一次开机都得用DOS启动SVN服务,而DOS窗口又无法关闭的情况 1.安装Setup-Subversion-1.8.5.msi搭建好SVN服务端(下载地址:http://subversion. ...
- SVN 服务端 和 客户端
网址大全 | EF CodeFirst | 电视 | MyNPOI | 开源 | 我的皮肤 | ASP.NET MVC4 | 前端提升 | LINQ | WCF ...
- suse安装svn服务端和客户端的使用
suse安装svn服务端 一. 安装服务端 配置网络安装源(suse11sp1为例) 新建11.1.repo11.1为软件源名称,可自定义文件并添加如下内容后保存 linux-e0xg:/etc/zy ...
随机推荐
- strstr()
char * __cdecl strstr ( const char * str1, const char * str2 ) { char *cp = (char *) str1; char *s1, ...
- mongodb基本数据类型
本文导读:Mongodb是一种强大,灵活,可扩展的数据存储方式.它扩展了关系型数据库众多有用的功能,如索引,范围查询和排序. MongoDB的文件存储格式为BSON,同JSON一样支持往其它文档对象和 ...
- std::function,std::bind
std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...
- C标准函数库(常用部分)
- apache安装后编译新模块
1.下载对应版本的源码包 2.解压后找到modules/mappers目录并进入 3.运行如下命令自动编译.安装和修改httpd.conf文件: /usr/sbin/apxs -c -i -a mod ...
- tar 的一个记录
今天看到群里有人在问.用tar命令备份/etc/passwd 文件提示删除/的提示 这里我要说明下,tar的打包压缩 命令: tar -zcv -f /backup/passwd.tar.gz /et ...
- logback logback.xml常用配置详解(三)
logback logback.xml常用配置详解 <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之 ...
- 读<你必须知道的.NET>IL指令笔记
IL指令笔记: 1.newObj和initObj MSDN解释:newObj用于分配和初始化对象,而initObj用户初始化值类型 newObj解释: (1):从托管堆分配指定类型所需要的全部内存空间 ...
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...
- java笔记--使用事件分配线程更新Swing控件
使用事件分配线程更新Swing控件: Swing并不是线程安全的,如果在多个线程中更新Swing控件,则很可能造成程序崩溃. 为了避免这种问题,可以使用时间分配线程来更新Swing控件. EventQ ...