公司项目比较多,每次都要一个一个项目更新版本库很麻烦也很浪费时间,所以抽空写了个shell脚本来批量更新项目版本库
代码如下:
#!/usr/sh
# 定义用到的变量
directory_path=""
# 定义读取输入字符的函数
function getDirectoryPath() {
# 输出换行,方便查看
echo "================================================"
# 监听输入并且赋值给变量
read -p " 请输入项目根路径: " directory_path
echo "================================================"
# 如果为空值,重新监听
if test -z "directory_path"; then
getDirectoryPath
else
startGit ${directory_path}
fi
}
function startGit() {
if [ -d $1 ];
then
cd $1
for dir in $(ls -l ./ |awk '/^d/ {print $NF}')
do
dir_or_file=$1"/"$dir
cd $1"/"$dir
if [ -d ".git" ]; # 此处根据该目录下是否有 .git 文件夹来判断是否版本库所在文件夹
then
echo " ------ \033[32m $dir \033[0m 开始更新 ------ "
result=`git branch | grep "*"` # 获取分支名
current_branch=${result:2} # 去除多余的* 获取当前分支
echo "当前分支 \033[35m $current_branch \033[0m"
git pull origin $current_branch
echo " ------ \033[32m $dir \033[0m 更新完成 ------ \n"
else
startGit $dir_or_file
fi
done
else
echo "$1 不是一个有效的目录"
fi
}
getDirectoryPath
echo "\n------- 所有项目已经更新完成 -------"
脚本使用
ly@phperLi ~/Downloads sh xx.sh
然后输入项目所在目录的跟目录
效果如下图所示