最近需要使用python做unity自動更新打包操作悼粮,因為我們的項目資源都是使用git倉庫做版本控制管理笛辟,所以在做自動更新打包操作的時候嬉愧,首先就是先重置更新本地的倉庫并且同步git上的最新版本資源沙庐。
本來我想只要每次打包的時候狡蝶,使用命令去拉取git最新的版本就可以了绢掰,但是如果你本地的版本跟git上的版本差異比較大痒蓬,或者有沖突的時候就會更新失敗,這時候就不能直接使用 git pull 去拉取了滴劲,而是要先重置強制舍棄掉本地的所有修改攻晒,再然后去拉取git上的最新資源。根據(jù)這個想法我寫了一個腳本
#!/bin/sh
# 腳本目錄 先把項目更新下來
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT=$1 #項目的git名字
PRO_BRANCH=$2 #項目分支
BASE_GIT_URL="http://10.1.0.103:3000/global"
#項目git地址
PRO_GIT_URL="${BASE_GIT_URL}/${PROJECT}.git"
#你的項目路徑
DIR_PROJ="${DIR}/Build/${PROJECT}/workspace"
echo '更新項目開始......'
if [ ! -x "$DIR_PROJ/.git" ]; then
if [ -x "$DIR_PROJ" ]; then
echo '$DIR_PROJ已經(jīng)存在班挖,先刪除'
rm -r "$DIR_PROJ"
fi
echo "git控制不存在鲁捏,checkount.....${PRO_GIT_URL}"
git clone $PRO_GIT_URL "${DIR_PROJ}"
cd "${DIR_PROJ}"
echo "${DIR_PROJ}"
git checkout "origin/${PRO_BRANCH}"
else
echo 'git控制已經(jīng)存在, 更新資源'
cd "${DIR_PROJ}"
#git reset --hard
git checkout . && git clean -df
git pull
git checkout "origin/${PRO_BRANCH}"
fi
echo '更新項目結(jié)束......'
在測試的時候發(fā)現(xiàn)了一個新的問題就是當(dāng)項目存在的時候去運行shell腳本更新的時候,報了一個錯誤萧芙,讓我制定分支去更新具體報錯
更新項目開始......
git控制已經(jīng)存在, 更新資源
HEAD is now at 9ab776d bowenk bowenk
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
HEAD is now at 9ab776d... bowenk bowenk
更新項目結(jié)束......
所以后面去網(wǎng)上找了個方法試下點擊這里去看看吧
網(wǎng)上很多人都是說用這個方法可以给梅,但是我不知道我哪里寫錯了就是不行,既然這樣我就用了個很丑的方法双揪,既然讓我指定個分支去讓就指定吧动羽,master分支是肯定會存在的,所以為我直接 git checkout master 然后再git pull 渔期。
測試了下 每次都會更新到最新的資源运吓,而且還不會報錯了,最后貼上完整的shell腳本疯趟,希望大家多多指教拘哨。
#!/bin/sh
# 腳本目錄 先把項目更新下來
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# STYLE_NAME=$1 #類型名字
PROJECT=$1 #項目的git名字
PRO_BRANCH=$2 #項目分支
BASE_GIT_URL="http://10.1.0.103:3000/global"
#項目git地址
PRO_GIT_URL="${BASE_GIT_URL}/${PROJECT}.git"
#你的項目路徑
DIR_PROJ="${DIR}/Build/${PROJECT}/workspace"
echo '更新項目開始......'
if [ ! -x "$DIR_PROJ/.git" ]; then
if [ -x "$DIR_PROJ" ]; then
echo '$DIR_PROJ已經(jīng)存在,先刪除'
rm -r "$DIR_PROJ"
fi
echo "git控制不存在迅办,checkount.....${PRO_GIT_URL}"
git clone $PRO_GIT_URL "${DIR_PROJ}"
cd "${DIR_PROJ}"
git checkout "origin/${PRO_BRANCH}"
else
echo 'git控制已經(jīng)存在, 更新資源'
cd "${DIR_PROJ}"
git reset --hard
git checkout . && git clean -df
git checkout master
git pull
git checkout "origin/${PRO_BRANCH}"
fi
echo '更新項目結(jié)束......'