`

shell 更新所有git目录

阅读更多

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

 

代码如下:

 

#!/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",这里将它重定向到日志中做处理

 

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

 

#!/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逻辑更多了,该想想如何去改了......

 

 

分享到:
评论

相关推荐

    GitHub Git Shell 客户端 Windows 64 可用

    另一个文件“Github_3.3.3.0”可能是一个特定版本的Git Shell安装程序,版本号3.3.3.0,意味着这是软件的某个更新迭代,可能包含了一些修复和改进。 总的来说,这个压缩包提供了一种在Windows 64位系统上轻松安装和...

    Git指令的Shell脚本

    Git指令的Shell脚本,能够快速便捷地管理Git库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git库目录下,利用Shell运行...

    gitRepoUpdater:此Shell脚本更新文件夹中所有的git存储库

    此Shell脚本将更新文件夹中所有的git存储库 指示 要更新文件夹中的所有git repos,您可以使用: $ ./updateRepos.sh all 或者 $ ./updateRepos.sh -a 要评估哪个回购更新,您可以使用: $ ./updateRepos.sh each...

    linux-gitshell客户端增强

    Git Shell是一个基于命令行的Git交互界面,通常用于执行Git的基本操作,如克隆、提交、推送和拉取等。通过增强Git Shell,我们可以提高工作效率,更好地管理代码仓库。 描述中的“git shell客户端增强”可能涉及到...

    通过Shell脚本,结合Git实现增量部署基于Maven的Java项目.zip

    本文将详细探讨如何通过Shell脚本和Git实现基于Maven的Java项目的增量部署。 首先,让我们理解核心组件的作用: 1. **Git**:这是一个分布式版本控制系统,用于跟踪对代码库的修改。在增量部署过程中,Git帮助我们...

    git批量拉取项目的脚本,简便快捷

    下面是一个简单的示例,展示了如何遍历指定目录下的所有Git仓库并拉取更新: ```bash #!/bin/bash # 指定包含Git仓库的目录 REPO_DIR="/path/to/your/repos" # 遍历目录下的每个子目录(假设每个子目录都是一个...

    键更新git脚本

    一键更新git脚本,使用该shell脚本可以使用一键即可更新所有关联的git目录资源到本地。

    Git与Git Shell的安装+使用(远程服务器)-windows

    2.查看Git版本:git --version 3.配置用户信息:git config --global user.name “用户名” 配置用户邮箱:git config --global user.email “用户email” 4.查看配置的用户信息:git config --list

    GitBash和GitGui右键失效解决方法

    1.在shell目录右键->新建(项),然后重命名为 Git Bash Here,此时右键菜单会显示出“Git Bash Here”。 2.给gitbash 添加图片: 选中 Git Bash Here,右键新建(字符串值),并重命名为Icon,Icon的值设置为D:\...

    gitclone shell

    适用于svn迁移git自动化脚本,配置好参数即可

    linux-gitsh一个定制的bash环境适合git的工作

    Linux Git Shell,通常简称为`git-sh`,是一个基于Bash的定制shell,专为Git开发者设计,提供了更高效和方便的Git操作环境。这个工具是GitHub上许多项目中的一个实用工具,它使得日常的Git操作更为流畅,尤其是在...

    Git Bash windows 64 git2.16.2

    1. 初始化新的Git仓库:使用`git init`命令在当前目录创建一个新的Git仓库。 2. 克隆远程仓库:通过`git clone [url]`命令将远程仓库复制到本地。 3. 添加文件到暂存区:用`git add [filename]`或`git add .`将文件...

    基于Python、HTML、JavaScript、CSS和Shell的Shunyi Git 42美多商城设计源码

    该项目是一款集Python、HTML、JavaScript、CSS和Shell于一体的Shunyi Git 42美多商城设计源码,共计包含231个文件,涵盖115个Python脚本、35个HTML页面、24个JPG图片、21个JavaScript脚本、19个PNG图片、3个字体文件...

    GIT基本操作使用分享,基础知识

    - 添加当前目录下的所有文件到暂存区: ```shell git add . ``` - 添加指定目录下的所有文件到暂存区: ```shell git add [dir] ``` ##### 3. git commit - 提交暂存区到仓库 将暂存区的文件提交到仓库,...

    使用git命令方式向GitHub服务器提交

    一旦本地的更改已经提交,下一步就是将这些更改推送到远程仓库,以便团队成员可以访问到这些更新。 ```shell git push -u origin master ``` 这里的`-u`选项用于设置追踪关系,`origin`是远程仓库的名字,`master`...

    遍历本地git仓库拉取更新代码

    面对100多个git仓库,手工同步更新是一件麻烦而痛苦的事情!可使用git脚本+定时任务,实现自动同步。解放自己,做更有意义的事情。 调用方法: sh /opt/git-repo-sync-script.sh /opt/GitRepoClone/

    Jenkins+Git+Maven+Shell+Tomcat持续集成环境

    Jenkins+Git+Maven+Shell+Tomcat 持续集成环境 本文主要讲述如何使用 Jenkins、Git、Maven、Shell 和 Tomcat 搭建一个持续集成环境,以提高软件开发效率和质量。首先,Jenkins 是一个开源软件项目,旨在提供一个...

    git上传代码初识

    如果你需要从零开始创建一个新的版本库,则可以先在本地创建一个工作目录,然后通过`git init`命令对其进行初始化。初始化之后,该目录下的所有文件都会被纳入版本控制。接着,如果需要将这个版本库同步到远程...

    Git 和 GitDesktop For Windows

    Git-2.19-for-windows.exe是Git的最新Windows版安装包,包含了Git的所有核心功能,包括命令行工具和集成的shell。 Git的核心特性包括: 1. 分布式:每个开发者的本地机器上都有一个完整的代码库副本,可以离线工作...

    Git工具使用指令

    该命令会在当前目录下创建一个名为 `.git` 的隐藏文件夹,用于存储版本库的所有信息。需要注意的是,与传统的集中式版本控制系统(如 SVN)不同,Git 的每一个工作目录实际上都是一个完整的本地仓库。 ##### 2.2 ...

Global site tag (gtag.js) - Google Analytics