当前位置:   article > 正文

批量更新git仓库_git clone update 批量执行

git clone update 批量执行

        本地有100多个git仓库,手工同步更新是一件麻烦而痛苦的事情!经过分析,可使用git脚本+定时任务,实现自动同步。解放自己,做更有意义的事情。

目录

1、批量更新脚本

2、执行验证脚本

3、查看日志输出

3.1、本地仓库目录

3.2、远程仓库列表

3.3、同步日志列表


运行环境:

  • CentOS-7.9-X86_64
  • Windows-7-Ultimate-x64、Windows-10-BusinessEditions-1909-x64

1、批量更新脚本

        脚本主要功能是通过遍历本地目录,解析本地目录的git仓库信息,并从远程拉取最新代码到本地。

vi /opt/git-repo-sync-script.sh

脚本内容如下(版本已更新至 2022.03.17):

  1. #!/bin/bash
  2. echo "# ##################################################"
  3. echo "# Subject: 遍历git本地仓库拉取更新代码"
  4. echo "# Date: 2020.11.10"
  5. echo "# Author: 狂龙骄子"
  6. echo "# BlogUrl: https://blog.csdn.net/Sn_Keys"
  7. echo "# Remark: 配置定时任务同步,每周一上午9点执行"
  8. echo "# 0 9 * * 1 nohup /opt/git-repo-sync-script.sh"
  9. echo "# ##################################################"
  10. # 设置环境变量:解决git log中文乱码
  11. export LESSCHARSET=utf-8
  12. # 系统日期时间
  13. DATETIME=`date +"%Y%m%d_%H%M%S"`
  14. # 根搜索目录
  15. SEARCH_ROOT_DIR="$1"
  16. # 本地仓库目录列表
  17. GIT_LOCAL_REPO_LIST=${SEARCH_ROOT_DIR}/gitRepoLocalList-${DATETIME}.txt
  18. # 远程仓库地址列表
  19. GIT_REMOTE_REPO_LIST=${SEARCH_ROOT_DIR}/gitRepoRemoteList-${DATETIME}.txt
  20. # 拉取日志
  21. GIT_PULL_LOG=${SEARCH_ROOT_DIR}/gitRepoPullLog-${DATETIME}.txt
  22. # 获取所有.git文件夹
  23. find "${SEARCH_ROOT_DIR}" -type d -name ".git">"${GIT_LOCAL_REPO_LIST}"
  24. # 从远程仓库拉取最新
  25. gitPull() {
  26. echo "------------------------------`date +\"%Y-%m-%d %H:%M:%S\"`------------------------------"
  27. echo "本地目录: $1"
  28. echo "远程仓库: $2"
  29. git pull -v
  30. echo -e "\n\n"
  31. }
  32. # 遍历本地仓库目录
  33. while read line ; do
  34. cd "$line/../"
  35. # 获取远程仓库地址
  36. REMOTE_REPO_URL=`git remote -v | awk 'NR==1{print $2}'`
  37. echo "${REMOTE_REPO_URL}">>"${GIT_REMOTE_REPO_LIST}" 2>&1 &
  38. # 从远程仓库拉取最新
  39. gitPull "`pwd`" "${REMOTE_REPO_URL}">>"${GIT_PULL_LOG}" 2>&1 &
  40. done < "${GIT_LOCAL_REPO_LIST}"
  41. # 返回根搜索目录
  42. cd "${SEARCH_ROOT_DIR}"

2、执行验证脚本

脚本的共1个参数,为要解析的根目录。

sh /opt/git-repo-sync-script.sh /opt/GitRepoClone/

每次脚本执行完成后,会在 指定的 根搜索目录 下生成3个日志文件:

  • 本地仓库目录:gitRepoLocalList-*.txt
  • 远程仓库列表:gitRepoRemoteList-*.txt
  • 同步日志明细:gitRepoPullLog-*.txt

Linux系统,可以配合 crontab 定时任务使用。

3、查看日志输出

  • 3.1、本地仓库目录

  • 3.2、远程仓库列表

迁移、分享时,可以通过 远程仓库列表文件 快速查找。

  • 3.3、同步日志列表

详细记录每个仓库远程地址、本地目录、变更内容。

建议:

由于是通过shell脚本批量更新,速度很快,可以在每个仓库同步成功后,设置一个暂停时间(如:1秒~5秒),避免被 github 墙。

        以上脚本还有优化的地方(如:部分仓库可能突然被设置需要登录github、gitee后才能同步,此时需要人工干预),请根据实际需求调整修改。

        欢迎留言、交流……


附录:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/464311
推荐阅读
相关标签
  

闽ICP备14008679号