利用git判断文件是否变化
现在有这么一个需求,我需要从Git仓库中获取某个json文件,并将有变化的内容进行获取。很容易想到使用workflow运行一个定时任务,但是怎么检测文件是否发生变化,和获取变化的内容就可以用到git了。
通过git diff
命令即可实现,假设需要检测的json文件为data.json
。
首先,需要将目标文件下载下来,可以git clone
后,将目标的json文件拷贝到当前目录下。
然后通过git diff HEAD
命令,即可比较当前文件与之前提交到仓库的最新版本进行比较。
这样会输出变化的内容,但是有的时候,我们只需要知道是否发生变化,加上--quiet
参数即可。这样就会在有变化的时候,返回1,没有变化的时候返回0。
通过以下方式即可实现:
if git diff-index --quiet HEAD; then
echo "No changes to commit"
else
# do something when change
fi
更多的时候会使用git diff-index
,猜测可能是因为效率问题 / 习惯问题吧。
使用Python发送邮件
推荐使用封装好的Python库yagmail
,获取好授权码之后,填入相关信息就好了,非常的方便。
import yagmail
# 邮箱设置
sender_email = os.environ['FROM_MAIL']
sender_password = os.environ['FROM_MAIL_PWD']
# 创建 yagmail 客户端
yag = yagmail.SMTP(sender_email, sender_password, host='smtp.qq.com', port=465)
yag.send(
to="example@qq.com",
subject="邮件主题",
contents=content.replace('\n','') # 内容,替换掉\n,是因为发送HTML时,\n也会展示出来,所以导致大片的空白
)