前言
每次新增一个项目的时候,都需克隆项目修改一堆文件。很不方便,如果有一个自动化脚本,一键搞定,可以省很多开发时间。
-
针对自己的项目思考了一下,项目用的YII框架,使用Git子模块实现的多项目架构,根据自己创建项目的步骤分析了一下,一共分为6步。
1、克隆项目架子
2、修改命名空间
3、修改配置文件
4、初始化Git仓库
5、提交初始版本
6、创建controller、model、service等接口文件正式开发 -
针对这几个步骤,可以制作一个自动化脚本。首先选择用shell命令实现。
shell命令制定
- 要设计的脚本主要实现初始化项目和添加服务文件两个功能。支持两个参数:
- subModule 要初始化的子项目名称
- service 增加的服务名称
定义好了 开始制作吧。
./submit.sh [subModule] [service]
初始化项目
- 脚本主要逻辑 先做个简单参数校验,第二个参数不传则是初始化项目,分三步:一、先克隆项目到本地,二、进行命名空间修改、三、提交到新Git仓库。
# 参数校验
if [ $1 == '' ]
then
echo "--submodule is null"
exit 0
else
echo "--clone submodule"
fi
# 初始化项目
if [ $2 == '' ]
then
# 克隆项目 到本地
git https://github.com/xxxx/demo.git $1
pwd
echo "clone module "
# 替换默认命名空间名
renameSpace $1 ./$1
# 提交Git分支
addGitConfig $1
else
#添加service 待补充...
exit
fi
- 修改命名空实现
这步操作比较暴力,首先在Demo中定义了一个固定字符,直接使用sed命令 替换子目录的默认命名空间.
#替换默认的命名空间
renameSpace()
{
echo "----begin rename namespace"
pushd $2
upper = echo $1 | awk '{print toupper($0)}'
sed -i "" "s/#demo/$1/g" `grep "#demo" -rl ./`
sed -i "" "s/#DEMO/${upper}/g" `grep "#DEMO" -rl ./`
popd
echo "----done "
}
- 添加Git子模块
记得创建Git子模块时,要在根目录修改.gitmodules文件,还要确保Git命令能够正常使用.
# 添加子模块
addGitConfig()
{
if [$1 =='' ]
then
exit 0
fi giturl="git@github.com/xxxx/sub_${1}.git"
echo "------add git config "
# 进入子目录
pushd $1
# 添加子模块
echo "[submodule \"${1}\"]
path = ${1}
url = ${giturl}" >> ../.gitmodules
rm -rf .git
#初始化新的Git分支
git init
git add ./*
git commit -m "first version "
git remote add origin ${giturl}
popd
echo "------done "
}
好了 第一步初始化已经完成,要去测试项目配置了(待续…)