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:根据当前文件重新创建存储库