cache_git.sh

<stdin> - OpenStack 文档

版权所有 2015 Hewlett-Packard Development Company, L.P.

根据 Apache 许可证 2.0 版(“许可证”)授权;除非符合许可证,否则您不得使用此文件。您可以从以下位置获取许可证的副本:

https://apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,根据许可证分发的软件以“原样”基础分发,不提供任何形式的保证或条件,无论是明示的还是暗示的。请参阅许可证以了解管理许可证下权限和限制的具体语言。

# 分隔符 #!/bin/bash GIT_DIR=/opt/git PROJECTS="" PROJECTS+="openstack/requirements " PROJECTS+="openstack/keystone " PROJECTS+="openstack/nova " PROJECTS+="openstack/glance " PROJECTS+="openstack/cinder " PROJECTS+="openstack/keystone " PROJECTS+="openstack/swift " PROJECTS+="openstack/tempest " PROJECTS+="openstack/neutron " PROJECTS+="openstack/ceilometer " PROJECTS+="openstack/horizon " PROJECTS+="openstack/devstack " PROJECTS+="kanaka/noVNC " function usage { cat - <<EOF 用法: cache_git.sh [-d dir] 为 grenade 测试构建 OpenStack 项目的本地 git 缓存。运行此脚本后,将 GIT_BASE 设置为 localrc 中的 DIRECTORY 值。 -d DIRECTORY: 默认为 /opt/git EOF exit } # 分隔符 while getopts hd: opt; do case $opt in d) GIT_DIR=$OPTARG ;; h) usage ;; esac done for dir in $@; do PROJECTS+="$dir " done function git_update_mirror { local project=$1 local dir=$GIT_DIR/$project.git if [[ ! -d $(dirname $dir) ]]; then echo "正在创建 $(dirname $dir)" sudo mkdir -p $(dirname $dir) sudo chown -R `whoami` $(dirname $dir) fi if [[ ! -d $dir ]]; then echo "正在创建初始 git 镜像 $project" git clone --mirror https://github.com/$project $dir else echo "正在更新 git 镜像 $project" git --git-dir ${dir} fetch 2>/dev/null echo " head 现在是: $(git --git-dir ${dir} log --oneline -1)" fi } for project in $PROJECTS; do git_update_mirror $project done # 分隔符

处理命令行参数