背景
日常开发下会有很多项目要处理,但是每次去开发一个很久没有动过的项目会发现代码有很多更新没有拉取,去手动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
- 这里的
demo1
、projects/demo2
指的是需要自动拉取的项目文件夹名,一行一个项目,灵活配置,可支持多级文件夹下的项目
demo1
projects/demo2
教程
首先如果你已经会了,请直接保存正式文件。如果不会,正式文件、调试文件请各保存一份,本文教程是基于调试文件。
- 请将保存后的
auto_git_pull.sh
、auto_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
就可以批量拉取了!
版权属于:塵世不再
本文链接:https://www.leeay.com/archives/101/
所有文章均采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。 您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
如果博客部分文章出现空白或异常,请留言或者联系博主修复。