sh 批量处理多个(git)存储库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 批量处理多个(git)存储库相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env bash
# Consider writing robust bash shell scripts ( http://mywiki.wooledge.org/ ;)
set -o nounset
# ----------------------
# Command line arguments
# ----------------------
#[[ $# -ge 1 ]] || { printf "\nusage: `basename ${BASH_SOURCE}` <repo-name>\n\n" 1>&2; return 1; }
# -------------
# Configuration
# -------------
declare -a REPOS=`ls -d */ | cut -d/ -f1 | sort`
declare -r CWD=`pwd`
declare -r DTS=`date +%Y-%m-%d-%H-%M-%S`
declare -r LOG=`basename $0`-${DTS}.log
declare -r DEFAULT_BRANCH="develop"
declare -r -A WORKING_BRANCHES=(
["some-module"]="env/DEV"
)
## ----
## Main
## ----
echo -e "\n--- ${DTS}\n" 2>&1 | tee -a "$CWD/$LOG"
for M in ${REPOS[*]}; do
# Execute loop body only for Git repos!
[[ -d "${CWD}/${M}" && -d "${CWD}/${M}/.git" ]] || continue
echo -e "\nRepository in ${M}..." 2>&1 | tee -a "$CWD/$LOG"
cd "${CWD}/${M}"
#: CUSTOM ( do use 2>&1 | tee -a "$CWD/$LOG" )
git fetch --all && \
git checkout ${WORKING_BRANCHES["${M}"]:-${DEFAULT_BRANCH}} && \
git pull 2>&1 | tee -a "$CWD/$LOG"
#/ CUSTOM
cd $CWD
done
以上是关于sh 批量处理多个(git)存储库的主要内容,如果未能解决你的问题,请参考以下文章
sh 将子目录从Git存储库分离为单独的存储库
markdown 批量备份和克隆列表中的git存储库
Jenkins:一个项目的多个Git存储库
sh git fatfiles,从git存储库中删除对象
sh 在存储库外部应用git补丁
sh git:根据当前文件重新创建存储库