1. 程式人生 > >用shell指令碼獲取svn版本號,作為專案的小版本號

用shell指令碼獲取svn版本號,作為專案的小版本號

在進行自動部署的時候,經常需要用指令碼獲取程式的最新版本號

在xcode中選中target的 Build Phases , 在Editor 中 選擇 Add Build Phases  --> Add Run Script Build Phases 然後新增前提是,(需要安裝好svn客戶端,可以在shell 中先進入到svn目錄,然後執行一下

`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'` 的方法,看看能不能獲取版本號
# 獲取XML版本的svn資訊,這樣可以避免不同語言的問題
svnv=`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'`

/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${svnv}" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

安卓

svnv=`svnversion |sed 's/^.*://' |sed 's/[A-Z]*$//'`
echo $svnv
sed -i s/versionName="\(.*build-\)[0-9]*"/versionName="\1$svnv"/ AndroidManifest.xml
cat AndroidManifest.xml |grep versionName


另附一個subversion 建立版本庫的指令碼,需要在create.sh 指令碼同一目錄下面,建立一個conf 資料夾,拷貝 authz,passwd,svnserve.conf 檔案在裡面,作為所有版本庫的共同配置檔案,統一做許可權控制。

#!/bin/sh
OPT=$1


svn_dir=/usr/local/svn/


#建立svn倉庫
create()
{
	echo "create repository .."


	svnadmin create ${svn_dir}${OPT}  


	echo "set auth users"


	cp ${svn_dir}conf/svnserve.conf ${svn_dir}${OPT}/conf/svnserve.conf


	echo "set access users"
	echo "
[${OPT}:/]
@dev = rw
@ui = rw
@test = rw
* = r" >> ${svn_dir}conf/authz


	echo "create trunk branches tags .."
	svn mkdir file://${svn_dir}${OPT}/tags -m -F 
        svn mkdir file://${svn_dir}${OPT}/trunk -m -F
        svn mkdir file://${svn_dir}${OPT}/branches -m -F
}


#建立
create