极速地将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个人项目并作一些贡献。工具

相关文章
相关标签/搜索