svn post-commit钩子实现多个项目同步

最近遇到这样一个svn版 本控制问题,我想实现一个版本库管理多个项目,因为我提交的权限设么的都是一个人,我就不想再重复去配置一个版本库,所有想把所有的项目集中在一个版本库 中进行管理。/data/svn/davesvn是我的一个版本库目录,/data/svn/davesvn/door和/data/svn /davesvn/dvlwebsite是我的两个项目版本库文件夹,他们都属于davesvn这个版本库,对于网站根目录程序是/data /wwwroot/door 、/data/wwwroot/dvlwebsite。但是我只有一个钩子文件,我该如何实现两个项目代码的同步?

雷小天博客

这 个问题的思路就是让钩子文件post-commit变成动态的钩子,我们提交哪个项目就更新哪个项目,在post-commit钩子文件中,我们是可以识 别出版本库的一级目录的,即我们是可以识别出是更新了door文件夹的代码,还是dvlwebsite文件夹代码,这样就能动态的更新我们所要更新的代 码,详细代码如下

//post-commit文件
#!/bin/bash
REPOS="$1"
REV="$2"
#DIR="/data/wwwroot/door"
export LC_ALL=en_US.UTF-8
export.UTF-8
SVNLOOK=/usr/bin/svnlook
CURDATE=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")  #提交作者   
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合 
MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的主目录  
PROJECT=$(echo $MASTERDIR | awk -F / '{print $1}')  #工程目录

DIR="/data/wwwroot/"$PROJECT


echo "Code Deployed By at $CURDATE,$REPOS,$REV,$AUTHOR,$CHANGEDDIRS,$MASTERDIR,$PROJECT,$DIR" >>/data/svn/davesvn/hooks/deploy_log
/usr/bin/svn update $DIR --username leiwen --password leiwen@123 --no-auth-cache
if [$? ==0 ]
then
        echo "ok" >> /tmp/z.out
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值