• 一个下载git库代码的脚本


    由于每日构建需求, 须要用脚本下载代码, 实现自己主动化编译, 这个脚本是整个系统的一小块功能



    #!/bin/bash
    
    #@author Liuyang
    #@date 2015-06-23
    
    function help() {
        echo "Usage: $0"
        echo "    First argument should be the git repository's address"
        echo "        for example: git@192.168.1.52:android/xiaomeidaojia.git"
        echo "    Second argument should be the branch you want to checkout"
        echo "        for example: dev"
        echo "    If the second argument is not supplied, master will be used as default"
    }
    
    # Whether the given branch is in local branches.
    function is_in_local_branch() {
        git branch | grep $1 2>&1 > /dev/null
        return $?
    }
    
    # Whether the given branch is in remote branches.
    function is_in_remote_branch() {
        git branch -r | grep origin/$1 2>&1 > /dev/null
        return $?
    }
    
    if [[ $# != 1 && $# != 2 ]]; then
        help
        exit 1
    fi
    
    # Judge whether the repository's address is valid.
    if [[ $1 != *.git ]]; then
        help
        exit 1
    fi
    
    # Split the project's name
    project_name=`echo $(basename $1) | cut -d . -f 1`
    
    
    if [[ ! -d $project_name ]]; then
        git clone $1
    else
        cd $project_name
        git reset HEAD --hard
        git pull
    
        if [[ $2 == "" ]]; then
            exit
        fi
    
        is_in_local_branch $2
        if [[ $? == 0 ]]; then
            git checkout $2
            exit
        fi
    
        is_in_remote_branch $2
        if [[ $? == 0 ]]; then
            git checkout -b $2 origin/$2
        fi
    fi



    脚本中, 首先推断该git库是否存在, 不存在则克隆该仓库.

    否则会回退全部更改, 然后运行拉取操作, 最后会切换到给定分支.


  • 相关阅读:
    从零开始搭建VUE项目
    推送类型
    spring整合消息队列rabbitmq
    Terracotta
    MYSQL INNODB 存储引擎
    Java 各种读取文件方法以及文件合并
    spring-security用户权限认证框架
    Spring Bean初始化过程
    使用PLSQL客户端登录ORACLE时报ORA-12502和ORA-12545错误的解决方案
    计算机语言基础概况
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6789093.html
Copyright © 2020-2023  润新知