本文最初發佈於個人我的博客:http://jerryzou.com/posts/gitForSAE/git
我花了一些時間本身寫了一個可以極速地將一個git項目部署到SAE的svn服務器上的腳本。代碼不是複雜,也沒有很深的技術。但確實是個好用的小工具,至少對我來講,不用把個人git項目打包成zip再上傳了,確實提升了超多效率!我將首先介紹一下腳本如何使用,再介紹我是如何實現這個shell腳本的。項目地址:https://github.com/zry656565/git-for-SAEgithub
.svn
加入 .gitignore
/Users/Jerry/Dev/git-for-SAE/
這樣的路徑下。~/.bash_profile
下# Git for SAE export GIT_FOR_SAE_ROOT=/Users/Jerry/Dev/git-for-SAE/ #此處就是你剛剛放置clone下來的項目路徑 export PATH=$GIT_FOR_SAE_ROOT:$PATH
.bash_profile
Terminal$ source ~/.bash_profile
若是svn服務器是:https://svn.sinaapp.com/sjtubus/
,那麼下面的第一個參數請填寫: sjtubus
若是經過上面那種方式安裝好後,你能夠進入你本身項目的根目錄,接着這樣使用:shell
#部署 #第一個參數是SAE上的項目名 #第二個數字表示版本號,SAE支持1-10 Terminal$ sae-push.sh sjtubus 1 #清空本地svn緩存 Terminal$ sae-clean.sh
簡單來講就分爲以上四步:
1. checkout SAE上的svn項目
2. 清除svn項目中的文件
3. 將git項目中的文件拷貝到svn項目中
4. 提交至SAE服務器緩存
首先,我在git項目的根目錄下建立.svn
文件夾用於存放SAE的svn項目,若是識別到已經建立了就跳過這個步驟,不然建立好.svn
後,執行 svn checkout $svn_repo_url
(地址由參數生成)。bash
接着爲了防止以前的文件對git項目產生影響,我會將它們所有刪除。反正既然採用這種管理手段,代碼版本管理都在git項目中,因此應該不會形成很差的影響。但有一點須要注意的是根目錄下的config.yaml
文件是不能刪除的,必須保留下來。須要執行的指令以下:服務器
mv config.yaml ../config.yaml rm -rf * mv ../config.yaml config.yaml svn st | awk '{print $2}' | xargs svn delete svn commit -m "clean"
接着就把git項目中的全部文件拷貝到.svn
文件夾下的項目中,執行以下指令:app
mv -f .svn ../.svn cp -rf * "../.svn/$svn_dir_name" mv -f ../.svn .svn
經過awk
判斷svn項目中全部文件的狀態,對全部?
狀態的文件,將它們加入到svn的版本管理中,並提交。svn
svn st | awk '{if ( $1 == "?") { print $2 }}' | xargs svn add svn commit -m "modify"
就這樣大功告成啦,總共源碼也只有60多行,有興趣的朋友能夠去看看源碼,也能夠fork個人項目並作一些貢獻。工具