您的位置:首页 > 运维架构 > Shell

shell 更新所有git目录

2013-11-29 12:12 92 查看


有时候,很久不接触的项目,突然要更新使用,而又懒的一个目录一个目录的去做更新处理,顾整理了一个shell脚本来做处理,同时也做为之前写的一篇文章的更新吧!链接/article/4030416.html

代码如下:

Shell代码


#!/bin/bash -x

PROJECTS_DIR=/home/gavingeng/projects/email

function update_all()

{

for d in `ls`

do

# echo $d;

cd $PROJECTS_DIR/$d

echo "update project:current_dir: $PWD"

`git pull` >>/home/gavingeng/tmp/test.log 2>&1 &

sleep 5

echo "update success ^_^"

done

}

function update()

{

echo "hello ,u can update"

`git pull` >>/tmp/test.log 2>&1 &

echo "update success ^_^"

}

cd $PROJECTS_DIR

if [ -z "$1" ];then

update_all

elif [ -d "$PROJECTS_DIR/$1" ];then

cd $PROJECTS_DIR/$1

echo $PWD

update

else

echo "not exist \"$PROJECTS_DIR/$1\""

exit 0;

fi

在做git更新时,若没有更新,就会出现"Already date to date",这里将它重定向到日志中做处理

今天又对脚本进行了更新、处理,如下:

Shell代码


#!/bin/bash -x

PROJECTS_DIR=/home/gavingeng/projects/email

##排除以下情况:

##1.非目录

##2.非git目录

function is_git_dir(){

param=`find $PWD -name ".git"`

if [ -z "$param" ];then

return 1 #1为假

else

return 0 #0为真

fi

}

function update_all()

{

for d in `ls`

do

if [ -d "$PROJECTS_DIR/$d" ];then

# echo $d;

cd $PROJECTS_DIR/$d

if is_git_dir $PWD;then

echo "update project:current_dir: $PWD"

`git pull` >>/home/gavingeng/tmp/test.log 2>&1 &

sleep 5

echo "update success ^_^"

else

echo "$PWD is not a git dir!"

fi

else

echo "$d is not a dirctory"

fi

done

}

function update()

{

echo "hello ,u can update"

`git pull` >>/tmp/test.log 2>&1 &

echo "update success ^_^"

}

cd $PROJECTS_DIR

if [ -z "$1" ];then

update_all

elif [ -d "$PROJECTS_DIR/$1" ];then

cd $PROJECTS_DIR/$1

echo $PWD

if is_git_dir $PWD;then

update

else

echo "$PWD is not a git dir!"

fi

else

echo "not exist \"$PROJECTS_DIR/$1\""

exit 0;

fi

改完后,发现if/else逻辑更多了,该想想如何去改了......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: