关键词:
实用svn主干trunk自动merge到各个分支branch脚本
大多数使用svn的公司,当发现bug时或新功能时,会从主干trunk直接产生一个分支branch,如叫bug01。接着同事A修改里面的bug,如果测试通过,就提交分支,将分支bug01合并到主干,并解决冲突和主干保持一致。同事B也拉了个分支bug02,他也修改了,也测试通过,就提交分支,将分支bug02合并到主干,并解决冲突和主干保持一致。理论上没有任何问题。
问题出现
但是有这样一个情况,同事A修改完就提交分支,合并到主干解决冲突,修改n次,同事B是修改完就提交,不合并到分支。修改了n次。突然有一天,同事想合并到主干时发现n多冲突,bug02和分支越走越远,不知道从哪下手解决。
解决思路
就是要让分支不要离主干太远,主干自动合到分支,没有发现冲突就合并,发现冲突,就revert还原分支,发冲突详情邮件,人工处理。做的定时,如果不处理,就一直发邮件。
有了脚本
脚本发邮件是用sendEmail,不是sendmail。是国外Brandon用perl写的,使用简单并且功能强大.这个被设计用在php、bash、perl和web站点使用。
官网:Http://caspian.dotconf.net/menu/Software/SendEmail/
不费话了,看脚本:
#!/bin/bash #write: lijing QQ 858080796 #date: 20160722 v1.0 #description:合并svn的主干到分支,无冲突,则merge,有冲突,就取消merge,并revert 和 发告警(邮件). #定义变量 source /etc/profile DATE=$(date "+%F %H:%M") SENDEMAIL=/usr/src/sendEmail # 定义发邮件程序 SVN_WORK_ROOT=/data/everyday_co_itnanbksvn # 定义下载到本地的svn副本目录 ERROR="" AUTH_UP="--username=lijing --password=lijing" # 定义认证账号 SVN_URL="http://svn.itnanbk.com/tcw/code/PHP" # 定义SVN地址 LOG=/tmp/.merge.log # 定义有、无冲突日志 SMSLOG=/tmp/.sms.log # 邮件信息 MAILUSER="[email protected]" #定义函数 # 定义显示颜色 Green(){ echo -e " 33[01;32m `date`$1