背景

日常开发下会有很多项目要处理,但是每次去开发一个很久没有动过的项目会发现代码有很多更新没有拉取,去手动git pull可能会需要很久的时间。所以稍微研究了一下,写了个脚本,用于定时拉取常用的项目。本方案适用于Linux系列、Mac系统等Unix操作系统。另有适用于Windows的方案,点击访问

原理

利用自带的Cron调用脚本文件即可。

代码

  • 一共二个文件,一个用于定时脚本,一个用于配制需要自动拉的项目的配置文件。
  • 脚本文件可以放在任意目录下,以下示例均以按照/Users/用户名/www/auto_git_pull/说明。
  • 配置文件放在/Users/用户名/www/下,目前是只能固定目录。

第一个auto_git_pull.sh

#!/bin/zsh
# 可改为 #!/bin/bash
dir=$(cd $(dirname $0); pwd)
today=$(date +"%Y-%m-%d")
log_file_path=$dir'/logs/'$today'.log'
echo '执行时间:'$(date +"%Y-%m-%d %H:%M:%S") |tee -a $log_file_path
if [ ! -f $log_file_path ]; then
  mkdir $dir'/logs'
  touch $log_file_path
fi
base_path=/Users/用户名/www/ # 这里是工作目录,目前设计脚本是可以放在任意位置,所以需要绝对路径
for project_path in $(cat $base_path'auto_git_pull.ini')
do
    cd $base_path$project_path
    echo $project_path |tee -a $log_file_path
    git pull |tee -a $log_file_path
done
echo "\n" |tee -a $log_file_path

第二个auto_git_pull.ini

  • 这里的demo1projects/demo2指的是需要自动拉取的项目文件夹名,一行一个项目,灵活配置,可支持多级文件夹下的项目
demo1
projects/demo2

教程

首先如果你已经会了,请直接保存正式文件。如果不会,正式文件、调试文件请各保存一份,本文教程是基于调试文件。

  • 请将保存后的auto_git_pull.shauto_git_pull.ini二个文件放入工作目录里的auto_git_pull文件夹里,如我的工作目录路径是/Users/用户名/www,脚本文件就放在/Users/用户名/www/auto_git_pull,脚本文件可以放在任意位置的,为什么要文件夹,是因为会产生日志文件(路径在/Users/用户名/www/auto_git_pull/logs下,日志文件按照日期命名),不需要日志自行修改脚本文件。
  • 手动调试,执行sh /Users/用户名/www/auto_git_pull/auto_git_pull.sh即可。
    调试结果
  • 加入定时任务crontab -e,输入0 * * * * /bin/sh /Users/用户名/www/auto_git_pull/auto_git_pull.sh,这是我的,一小时执行一次。

Tip

  • 如果临时有需要可以直接在Shell里运行sh /Users/用户名/www/auto_git_pull/auto_git_pull.sh就可以批量拉取了!
Last modification:April 1st, 2023 at 12:57 pm
如果觉得我的文章对你有用,请随意赞赏