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

#!/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库是否存在, 不存在则克隆该仓库.

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

一个下载git库代码的脚本的更多相关文章

  1. GIT库代码管理规范

    GIT库代码管理规范 一. 规范要求 1. 每个项目建立单独的GIT库.每个GIT库包括两条线,命名规则如下: 开发线(测试):项目名称_DEV 生产线(正式):项目名称 2. 每条线只允许增量不允许 ...

  2. Jenkins一个任务下载多个git库代码

    公司的项目是微服务架构,一个服务对应的一个git仓库,现在的需求时拉取所有仓库代码下来,指定父级的pom.xml,一次性构建打包 jenkins在默认情况下,一个任务只能配置一个git仓库地址 1.安 ...

  3. 其他:Git生成SSH、Git生成本地库、下载远程库代码 命令

    1.安装Git Bash https://git-scm.com/downloads 2.鼠标右键git bash here 3.执行以下命令: ①   cd ~/.ssh/    [如果没有对应的文 ...

  4. 将已有Git库代码推送到新建库中

    cd /path/to/your/git/repo/ git remote -v git remote rm origin git remote add origin ssh://abc@gmail. ...

  5. 使用快盘托管Git库

    Dropbox非常好用.可是我如今也没弄明确究竟哪里好用了.不如试试中国的金山快盘..起码不会操心被墙. cd ~/Kuaipan/repo git --bare init //初始化仓库 cd ~/ ...

  6. Eclipse 安装配置和 Git 创建代码库 教程

    1. Eclipse 安装 http://www.eclipse.org/downloads/ 这是eclipse的官网,进入下载,步骤如下图: 选择Download或者下面的 [Select Ano ...

  7. iOS 推荐一个下载用的第三方库

    AFNetworking有下载功能,但是下载功能比较基本,要实现复杂下载功能需要自己写一些代码.今天在github上找到了一个下载功能的开源项目,非常不错,链接如下:https://github.co ...

  8. git远程库代码版本回滚方法

    最近使用git时, 造成了远程库代码需要回滚到之前版本的情况,为了解决这个问题查看了很多资料. 问题产生原因: 提交了错误的版本到远程库. 以下是解决的方法, 供大家参考: 1.对本地代码库进行回滚 ...

  9. 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选

    毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.i ...

随机推荐

  1. hdu 5191(思路题)

    Building Blocks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  2. 杀掉MYSQL死锁进程

    vi /usr/local/killmysqlprocess.sh #!/bin/bash #*/1 * * * * /usr/local/src/killmysqlprocess.sh backdi ...

  3. linux上redis的安装与配置

    1.redis安装 wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xzf redis-4.0.8.tar.gz ln -s ...

  4. 16.RDD实战

    第16课:RDD实战 由于RDD的不可修改的特性,导致RDD的操作与正常面向对象的操作不同,RDD的操作基本分为3大类:transformation,action,contoller 1.   Tra ...

  5. ChannelFactory

    通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起 ...

  6. 利用navigator对象判断设备类型

    function getTerminalType() { //获取navigator对象 var o = navigator.userAgent, t = ""; if (/\bi ...

  7. 23、Django实战第23天:视频播放页面

    打开素材course-play.html,会发现播放页面处了包含播放器,其他和“章节”页面一样. 1.把course-play.html复制到template目录下 2.把下面两段代码拷贝出来 < ...

  8. 中文名: 交通事故责任认定, 英文名称: Traffic accident responsibility identification

    中文名: 交通事故责任认定, 英文名称: Traffic accident responsibility identification

  9. Hibernate4 No Session found for current thread

    Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for curre ...

  10. [BZOJ5020][THUWC2017]在美妙的数学王国中畅游(LCT)

    5020: [THUWC 2017]在美妙的数学王国中畅游 Time Limit: 80 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 323  ...