極速地將git項目部署到SAE的svn服務器上

本文最初發佈於個人我的博客:http://jerryzou.com/posts/gitForSAE/git

我花了一些時間本身寫了一個可以極速地將一個git項目部署到SAE的svn服務器上的腳本。代碼不是複雜,也沒有很深的技術。但確實是個好用的小工具,至少對我來講,不用把個人git項目打包成zip再上傳了,確實提升了超多效率!我將首先介紹一下腳本如何使用,再介紹我是如何實現這個shell腳本的。項目地址:https://github.com/zry656565/git-for-SAEgithub

功能

  • 一個腳本搞定將git項目部署到SAE的svn服務器上
  • 能夠很方便地管理SAE上的1-10版本
  • 自動將緩存文件夾 .svn 加入 .gitignore

安裝

  • 第一步,將本項目clone到本地並checkout到release分支,這麼作的話你在想要更新到最新版本時能夠隨時得到更新。或者你直接下載zip包。假設你將項目放到了如/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服務器緩存

1.checkout SAE上的svn項目

首先,我在git項目的根目錄下建立.svn文件夾用於存放SAE的svn項目,若是識別到已經建立了就跳過這個步驟,不然建立好.svn 後,執行 svn checkout $svn_repo_url (地址由參數生成)。bash

2.清除svn項目中的文件

接着爲了防止以前的文件對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"

3.將git項目中的文件拷貝到svn項目中

接着就把git項目中的全部文件拷貝到.svn文件夾下的項目中,執行以下指令:app

mv -f .svn ../.svn
cp -rf * "../.svn/$svn_dir_name"
mv -f ../.svn .svn

4.提交至SAE服務器

經過awk判斷svn項目中全部文件的狀態,對全部?狀態的文件,將它們加入到svn的版本管理中,並提交。svn

svn st | awk '{if ( $1 == "?") { print $2 }}' | xargs svn add
svn commit -m "modify"

就這樣大功告成啦,總共源碼也只有60多行,有興趣的朋友能夠去看看源碼,也能夠fork個人項目並作一些貢獻。工具

相關文章
相關標籤/搜索