阅读数:

巧用shell脚本和svn命令快速构建svn项目目录

0

说明

我们经常可能会遇到这样的情况,有一个应用框架(模版,已存在svn中),每次在新建应用的时候都是
1、先将应用框架下载下来,
2、删除.svn文件,
3、手动修改一些文件里的信息,比如我们的项目里需要修改index.html里的title值,和config/base.js里的打包应用名字。
4、改模版项目名字为新项目名字
4、新建svn新项目地址,
5、下载svn新项目空目录
6、上传代码

整个过程下来很蛋疼,每次都这么搞,可能你会问为什么不直接把模版代码copy到新项目的svn里再下载下来不行么?
答案被我们的运维工程师回绝了,呵呵哒,只能自己来了。这都不是事儿。
能自动干嘛要手动,于是想到了shell命令,结合svn命令搞个shell脚本;
下面是整个shell脚本,每行来个具体分析

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#参数1:app英文名,即dist打包文件名;参数2:html title;参数3:svn地址
#./mkproject.sh test 测试 http://svnxxx.xxx.xxx
# 通过$接收三个参数,
name=$1
appdesc=$2
svnurl=$3
# 如果文件夹存在就提示,否则继续
if [ -d "${name}" ]; then
echo "${name} is existed"
exit 0
fi
# 如果name参数为空存在就提示,否则继续
if [ ! "${name}" ]; then
echo "please input appname[english]"
exit 0
fi
# 如果appdesc参数为空存在就提示,否则继续
if [ ! "${appdesc}" ]; then
echo "please input appdesc[chinese]"
exit 0
fi
# 如果svn地址为空存在就提示,否则继续
if [ ! "${svnurl}" ]; then
echo "please input a svn url"
exit 0
fi
# 如果webapp_base应用框架存在就提示,否则继续
if [ -d "webapp_base" ]; then
echo "webapp_base is existed,please change a new path"
exit 0
fi
#echo "the ${name} are great man"
# 获取webapp_base模版应用代码
svn checkout http://svn.xxxx.yyyyy/webapp_base
# 重命名webapp_base为新项目名name
mv webapp_base ${name}
# 进入新项目目录
cd ${name}
# 删除不需要的文件
rm -rf .idea/ .svn/ node_modules/
# 返回上一级目录
cd ..
# 获取svn新项目目录
svn checkout ${svnurl}
# 进入新项目目录
cd ${name}
# 进入config目录
cd config
# sed命令修改base.js文件的字符;hello替换为name
sed "s/hello/${name}/g" _base.js >_base.js_bak
mv _base.js_bak _base.js
cd ..
cd src
# sed命令修改index.html文件的字符;hello替换为appdesc
sed "s/hello/${appdesc}/g" index.html >index.html_bak
mv index.html_bak index.html
# 返回项目根目录
cd ..
# 循环遍历所有要提交的文件,包括父子文件夹及文件
svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' |
# svn add
xargs svn add --force
# svn commit 备注信息:提交
svn commit -m=提交

0
赏点咖啡钱^.^