svn_差值更新

#!/usr/bin/env bash


#1:开始编号; 2结束编号; 3:部门文件目录 
if [ $# != 3 ]; then
        echo "错误: 请输入版本的开始 到结束 编号"
        exit
fi
if [ $1 -ge $2 ]; then
        echo "错误: 输入版本的开始 $1 到结束 $2 编号"
        exit
fi
SVN_URL="svn://127.0.0.1/8sword_server/trunk/server/"
OLD_VERSION=$1
NEW_VERSION=$2
BASE_DIR=$3


#导出的目标路径
WORK_PATH="/home/wzf/test/"
echo "开始分析版本差异..."
DIFF_URL="svn diff -r ${OLD_VERSION}:${NEW_VERSION} --summarize --username wzf --password g123456 ${SVN_URL}"
echo ${DIFF_URL}
if test ! -e "${WORK_PATH}"; then
    mkdir -p ${WORK_PATH}
fi


#echo ${DIFF_URL}|sh >${WORK_PATH}_diff.txt
DIFF_NUM=`${DIFF_URL} |wc -l`
if [ ${DIFF_NUM} -ne 0 ]; then
#if [ ${DIFF_NUM} -ne 0 ]; then
    echo "差异文件共${DIFE_NUM}个, 准备导出"
    DIFF_LIST=`${DIFF_URL}`
    NUM=0
    SKIP=0
    for FIELD in ${DIFF_LIST}; do        
    #长度小于3(A、M、D、AM即增加且修改)即是更新标识,否则为url
        if [ ${#FIELD} -lt 3 ]; then
            let NUM+=1
            SKIP=0
        if [ ${FIELD} == "D" ]; then
            #下一个应该跳过
            SKIP=1
        fi
        continue
    fi
    #若为删除文件则不必导出
    if [ ${SKIP} -eq 1 ]; then
        echo ${NUM}.'是删除操作,跳过:'${FIELD}
        continue
    fi


    #替换得到相对路径
    DIFF_FILE=${FIELD//${SVN_URL}/}
    echo ${NUM}.' '${DIFF_FILE}


    FILE_NAME=`basename ${DIFF_FILE}`
    FOLDER_NAME=`dirname ${DIFF_FILE}`
    FOLDER_PATH="${WORK_PATH}${FOLDER_NAME}"
    #echo ${FILE_NAME}' '${FOLDER_NAME}' '${FOLDER_PATH}


        if test ! -e "${FOLDER_PATH}"; then
            mkdir -p ${FOLDER_PATH}
        fi


        CMD="svn export -r ${NEW_VERSION} '${SVN_URL}${DIFF_FILE}'  '${FOLDER_PATH}/${FILE_NAME}' --force"
        #echo ${CMD}
        #echo ${NUM}.' '
        echo ${CMD}|sh
    done
    echo -e "目录:"${BASE_DIR}"\t版本号:"${OLD_VERSION}\t"->"${NEW_VERSION} "\t时间:" $(date +"%Y-%m-%d %H:%M:%S")>> /home/wzf/push_logs.txt
    echo "完成"
else
echo "没有版本变化"
fi


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值