| 
					
				 | 
			
			
				@@ -1,72 +1,175 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #! /bin/sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 源码地址; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ARG_CODE_URL='' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 源码存储方式:SVN、GIT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ARG_CODE_REPOS='SVN' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 源码版本; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ARG_CODE_REVISION='' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 源码本地路径; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ARG_CODE_WORK_PATH='' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 日期; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CURR_TIME=$(date +"%Y-%m-%d %T") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #LOG_FILE=/home/data/ApkAutoCompile/shell/log/download_$(date '+%d-%H%M%S').log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 LOG_FILE=/home/data/ApkAutoCompile/shell/log/download.log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+StrIsSubstring() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local x=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    case "$2" in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        *$1*) x=0;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    esac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo $x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+SwitchIntranet() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "\r\r---------------切换到内网---------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    route del default gw 10.201.40.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sleep 2s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    route del default gw 10.201.40.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sleep 1s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    route add default gw 10.201.40.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sleep 2s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    route add default gw 10.201.40.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+svn_clean() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SVN_PATH=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ -d ${SVN_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cd ${SVN_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 清空; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        msg=$(svn cleanup .) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 查找未提交的文件; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filelist=$(svn status 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "未提交的文件="${filelist} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 以"? "分组字符串; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filearray=(${filelist//? /}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for File in ${filearray[@]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 文件是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [ -f ${File} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rm -f ${File} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "已删除文件=${File}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            elif [ -d ${File} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rm -rf ${File} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "已删除路径=${File}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "svn clean: 路径不存在${SVN_PATH}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+git_clean() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 svn_download() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    echo "shell_log===>Download start---------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local Opt=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo ${CURR_TIME} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "shell_log===>Download start---------\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "AndroidSvnPath=${ARG_CODE_URL}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "AndroidSvnRevision=${ARG_CODE_REVISION}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    echo "AndroidCachePath=${ARG_CODE_WORK_PATH}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "AndroidCachePath=${ARG_CODE_WORK_PATH}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if [ -d ${ARG_CODE_WORK_PATH} ] || [ -f ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo -e "删除已有路径[${ARG_CODE_WORK_PATH}]代码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ $Opt -eq 1 ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "删除重新下载Code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rm -rf ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sleep 5s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if [ ${ARG_CODE_REVISION} != "" -a ${ARG_CODE_REVISION} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo "download the specified version!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        svn co -r ${ARG_CODE_REVISION} --force ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo "download the latest version!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        svn co --force ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 如果路径名是个文件,删除; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ -f ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "删除已有路径[${ARG_CODE_WORK_PATH}]代码\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rm -rf ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sleep 1s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 如果路径存在,只更新; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ -d ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # clean清空; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        svn_clean ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "svn cleanup msg="${msg}"\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ ${ARG_CODE_REVISION} != "" -a ${ARG_CODE_REVISION} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "update the specified version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn up -r ${ARG_CODE_REVISION} --force 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "update the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn up --force 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else #### 如果路径不存在,checkout; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ ${ARG_CODE_REVISION} != "" -a ${ARG_CODE_REVISION} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "download the specified version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn co -r ${ARG_CODE_REVISION} --force ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "download the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn co --force ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "svn msg=${msg}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 修改update_modules.sh权限; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if [ ! -d ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo -e "下载代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        # 判断文件是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if [ -f "update_modules.sh" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            echo "current dir:"${pwd} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            echo -e "\n\tupdate_modules.sh 文件存在,更新复用库\n\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            chmod 777 update_modules.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ./update_modules.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        update_modules 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    echo "shell_log===>Download end------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "\nshell_log===>Download end------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 git_download() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local Opt=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo ${CURR_TIME} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "shell_log===>Download start---------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "AndroidSvnPath=${ARG_CODE_URL}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "AndroidSvnRevision=${ARG_CODE_REVISION}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "AndroidCachePath=${ARG_CODE_WORK_PATH}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if [ -d ${ARG_CODE_WORK_PATH} ] || [ -f ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo -e "删除已有路径[${ARG_CODE_WORK_PATH}]代码" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ ${Opt} -eq 1 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "删除重新下载Code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rm -rf ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sleep 5s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    # 下载代码; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    msg=$(git clone ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    echo "-------------->"$msg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if [[ $msg != *"Total "* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo -e "1.下载代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 重新下载代码; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        msg=$(git clone ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "git clone msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ $msg != *"Total "* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "1.下载代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            exit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 更新代码; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ -d ${ARG_CODE_WORK_PATH} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(git pull origin master 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "git pull msg=${msg}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ $msg != *"Already up to date."* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "1.更新代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 重新下载代码; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(git clone ${ARG_CODE_URL} ${ARG_CODE_WORK_PATH} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo "git clone msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ $msg != *"Total "* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "2.下载代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if [ ${ARG_CODE_REVISION} != "" -a ${ARG_CODE_REVISION} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo "download the specified version!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 切换到指定commit id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        git checkout -b master ${ARG_CODE_REVISION} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        msg=$(git checkout -b master ${ARG_CODE_REVISION} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "git checkout msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo "download the latest version!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fi 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -75,26 +178,214 @@ git_download() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo -e "2.下载代码[${ARG_CODE_URL}]失败" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        # 判断文件是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if [ -f "update_modules.sh" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            echo "current dir:"${pwd} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            echo -e "\n\tupdate_modules.sh 文件存在,更新复用库\n\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            chmod 777 update_modules.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ./update_modules.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        update_modules 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     echo "shell_log===>Download end------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+update_svn_modules() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local name=$1           # 模块名称; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local url=$2            # 模块地址; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local revision=$3       # 模块版本; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "on func:update_svn_modules:${name},${url},${revision}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 判断模块名文件夹是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ -d ${name} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${name}->存在\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ ${revision} != "" -a ${revision} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "update the specified version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn up -r ${revision} --force 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "update the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn up --force 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "svn up msg=${msg}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${name}->不存在\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ ${revision} != "" -a ${revision} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "download the specified version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn co -r ${revision} --force ${url} ${name} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "download the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(svn co --force ${url} ${name} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "svn up msg=${msg}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+update_git_modules() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local name=$1           # 模块名称; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local url=$2            # 模块地址; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local revision=$3       # 模块版本; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    local subdir=$4         # 仓库子路径; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "on func:update_git_modules:${name},${url},${revision},${subdir}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ x${subdir} == x"" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "git clone all repo\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 判断模块名文件夹是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ -d ${name} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${name}->存在\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 先更新; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(git pull origin master 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo "git pull msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [ ${revision} != "" -a ${revision} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                msg=$(git checkout -b master ${revision} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo "git checkout msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "update the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${name}->不存在\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 先clone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg=$(git clone ${url} ${name} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo "git clone msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [ ${revision} != "" -a ${revision} != "0" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                msg=$(git checkout -b master ${revision} 2>&1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo "git checkout msg: $msg\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "download the latest version!\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "git clone sub dir\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [ ! -d ${name} ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mkdir ${name} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cd ${name} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 初始化空仓库; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git init 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 拉取远程仓库; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git remote add -f origin ${url} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 开启sparse clone; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git config core.sparsecheckout true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 设置要pull的目录; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo ${subdir} >> .git/info/sparse-checkout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        more .git/info/sparse-checkout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 更新; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git pull origin master 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+update_modules() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "### on func:update_modules ###\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 进入源码路径; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 判断modules_svn.cfg是否存在; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ -f "modules_svn.cfg" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        local git_user=$(git config --global --list |grep user.name|cut -d'=' -f2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        local git_email=$(git config --global --list |grep user.email|cut -d'=' -f2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "user.name=${git_user}, user.email=${git_email}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        local module_name= module_url= module_ver= module_subdir= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 读取git config --global --list内容; 从中获取到用户名、邮箱; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # git clone ssh://邮箱名@10.126.16.60:29418/TIF_ATSCInput.git 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ################################################################################################################### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # SVN的cfg文件如下; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # modules_svn.cfg: [MODULE],UDP,https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/src/UDP/udp,6265 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ################################################################################################################### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # GIT的cfg文件如下:比SVN多出的一项是该仓库下的子目录; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # modules_svn.cfg: [MODULE],UDP,ssh://apk@10.126.16.60:29418/UDP,6265,udp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # modules_svn.cfg: [MODULE],firebaseanalytisc,ssh://apk@10.126.16.60:29418/firebaseanalytisc,6255,firebaseanalytisc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 按行读取; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while read line 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            val=`echo $line|sed 's/[\r\n]*$//g'` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo "行内容:$val" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [ `StrIsSubstring "[MODULE]" $val` -ne 0 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo "Warning: No Module Format in - " + $val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 获取模块名称; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            val=${val#*,} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            module_name=${val%%,*} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 获取模块地址; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            val=${val#*,} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            module_url=${val%%,*} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 判断模块存储仓库类型; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ $module_url = *"https://odm-design-center-hz.tclking.com"* ]];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo "源码为svn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 获取版本; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [ `StrIsSubstring "," $val` -eq 0 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    module_ver=${val#*,} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    module_ver="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "module_name=${module_name}\nmodule_url=${module_url}\nmodule_ver=${module_ver}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                update_svn_modules ${module_name} ${module_url} ${module_ver} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            elif [[ $module_url = *"10.126.16.60"* ]];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo "源码为git" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 获取版本; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                val=${val#*,} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                module_ver=${val%%,*} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 获取子路径; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [ `StrIsSubstring "," $val` -eq 0 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    module_subdir=${val#*,} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    module_subdir="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "module_name=${module_name}\nmodule_url=${module_url}\nmodule_ver=${module_ver}\n${module_subdir}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                update_git_modules ${module_name} ${module_url} ${module_ver} ${module_subdir} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        done < "modules_svn.cfg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "modules_svn.cfg 模块文件不存在\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ARG_CODE_URL=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ARG_CODE_REVISION=$2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ARG_CODE_WORK_PATH=$3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    svn_download 2>&1 | tee ${LOG_FILE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    #git_download 2>&1 | tee ${LOG_FILE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ############################## 获取APK名称 ############################################# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    APK_NAME=$ARG_CODE_URL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 取右边第一个字符,判断是否为斜杠; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ "${APK_NAME:0-1:1}" = "/" ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 若为斜杠,%号截取,删除右边第一个'/'及右边字符,保存左边字符; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "最后为斜杠,删除斜杠" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        APK_NAME=${APK_NAME%/*} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 获取APK名称; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    APK_NAME=${APK_NAME##*/} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 重新定义log文件; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ ! -d /home/data/ApkAutoCompile/shell/log/download/ ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        msg=$(mkdir /home/data/ApkAutoCompile/shell/log/download/last) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    LOG_FILE="/home/data/ApkAutoCompile/shell/log/download/${APK_NAME}.log" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ############################## 获取APK名称 ############################################# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [ ! -d /home/data/ApkAutoCompile/cacheAndroidSrc ];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 递归创建目录; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mkdir -p /home/data/ApkAutoCompile/cacheAndroidSrc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SwitchIntranet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [[ $ARG_CODE_URL = *"https://odm-design-center-hz.tclking.com"* ]];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "源码为svn" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ARG_CODE_REPOS='SVN' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        svn_download 1 2>&1 | tee ${LOG_FILE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 导出svn提交账号; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cd ${ARG_CODE_WORK_PATH} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        svn log --xml | grep "^<author" | sort -u | \awk -F '<author>' '{print $2}' | awk -F '</author>' '{print $1}' > userinfo.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif [[ $ARG_CODE_URL = *"10.126.16.60"* ]];then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "源码为git" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ARG_CODE_REPOS='GIT' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git_download 1 2>&1 | tee ${LOG_FILE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-main $@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+main $@ 
			 |