svn_差值更新
来源:互联网 发布:cf网截瞬移源码 编辑:程序博客网 时间:2024/06/01 07:11
#!/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 g1989721 ${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
#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 g1989721 ${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
- svn_差值更新
- SVN_版本控制
- 差值
- 差值
- SVN_服务器和客户端安装
- 最大差值 记录并更新最小值和最大差值 时间O(N),空间O(1)
- Linux上部署SVN_个人心得
- java-eclipse&svn_&javaHL 打包下载
- 菜鸟先飞之SVN_服务器端安装
- 菜鸟先飞之SVN_客户端安装
- 菜鸟先飞之SVN_服务端和客户端的使用
- 計算時間差值
- 时间差值
- * 正差值
- 正差值
- 两书正差值
- 正差值
- 求两数正差值
- Py GUI
- Python爬虫常用文档
- 【go语言读取mysql】go语言连接mysql,并且查询出结果
- nohub命令
- 点击下载文件、图片
- svn_差值更新
- call
- Quartz定时器快速入门学习(一)
- HTTP 各种状态码代表的含义
- Navicat修改查询保存路径
- ViewPager的切换效果
- class.getResource()的用法
- Linux 下的 Nginx 配置
- 给虚拟机添加虚拟磁盘时出现uuid already exists解决办法