多语言展示
当前在线:1470今日阅读:23今日分享:25

linux svn导出发布两版本之间代码文件

项目实施, 发布代码工作也是其繁琐的(当然小型项目直接可以通过FTP方式上传),但在团队合作开发中,这个方式显然不能更好地打分支,回滚代码.  自己动手写了一个基于bash方式进行自动发布导出svn两版本之间的文件shell脚本. 来进行代码发布.分享给大家,希望可以能大家在发布代码上带来一些方便.
方法/步骤
1

#!/bin/sh#导出指定版本之间的差异文件 如100到200之间的差异则导出100(不包括)-200(包括)的所有修改 SVN_URL='https://svn.anepx.com/project1' if [ $# -eq 0 ] ; then  echo 'You must useage like $0 old_version1(不包括) new_version(包括)'  exit 1fi if [ $1 -gt $2 ] ; then  echo 'You must useage like $0 old_version1(不包括) new_version(包括)'  exit 1fi OLD_VERSION=$1NEW_VERSION=$2 #导出的目标路径WORK_PATH='/usr/local/apache2.2/htdocs/www.php512.com' echo '开始分析版本差异...'DIFF_URL='svn diff -r ${OLD_VERSION}:${NEW_VERSION} --summarize --username svn用户名 --password svn密码 ${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  echo '差异文件共${DIFF_NUM}个,准备导出.'  DIFF_LIST=`${DIFF_URL}`  #echo ${DIFF_LIST}  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 '版本号:'${OLD_VERSION}'->'${NEW_VERSION} '\t时间:' $(date +'%Y-%m-%d %H:%M:%S')>> /home/svn/push_logs.txt  echo '完成'else  echo '版本间没有差异'fi将文件保存到/bin/publish.sh,并为此文件添加可执行权限:

2

chmod +x /bin/publish.sh运行命令:

3

publish.sh 1 100此命令作用是将svn版本库中版本号为2~100之间的版本文件到目标路径。/usr/local/apache2.2/htdocs/www.php512.com

推荐信息