提交所有更改并通过电子邮件发送已更改/添加/删除的文件

时间:2018-02-27 10:56:58

标签: python git python-3.x popen

我是python和GIT新手。

我的目标是将所有更改提交给GIT,并通过电子邮件发送已更改/添加/删除的文件列表。这个脚本每天运行一次。

我想出了这个。

import os
import subprocess
from subprocess import *

accpath = '/home/Project'
subprocess.Popen(["git","init"],cwd = accpath)

subprocess.Popen(["git","add","."],cwd = accpath)
subprocess.Popen(["git","commit","-a","-m","'committed'"],cwd = accpath)

v = subprocess.Popen(["git","status","-s"],cwd = accpath)

输出:

Reinitialized existing Git repository in /home/Project/.git/
M  Italy/ACMilan/team.cfg
D Italy/ACMilan/team.tet
A  Italy/ACMilan/team.ttwq
[master 2381802] 'committed'
2 files changed, 1 insertions(+), 2 deletions(-)
delete mode 100644 Italy/ACMilan/team.tet
create mode 100644 Italy/ACMilan/team.ttwq

如何获得可理解的输出并通过电子邮件发送?我只需要M,D和A部分。

1 个答案:

答案 0 :(得分:0)

您的问题有两个简单的选择:

在提交时使用Git钩子推送到某些API并运行某种cron脚本来发送电子邮件。 http://githooks.com/

Git Hooks在git事件上运行脚本。您可以定义这些脚本。 快速下来:

可以在任何Initialized Git仓库中添加Git钩子脚本。

如果您执行ls -l .git/hooks/,您将看到所有可用的挂钩。如果打开pre-commit挂钩,则可以覆盖默认行为。 (请记住,当您犯错时备份原始脚本。)

使用github REST API获取当天的提交。这应该会在当天的提交中为您提供一些信息https://developer.github.com/v3/。样本将类似于以下内容:

获取https://api.github.com/repos/:owner/:repo/commits

调用时,您将获得一个分页提交列表。 (请记住,您需要添加身份验证标头)。

如果您只想接收当天的提交,请添加since参数:

获取https://api.github.com/repos/:owner/:repo/commits?since=2018-03-20T00:00:00+02:00

这只会让你在当天做出承诺。查看github REST api文档以获取完整的详细信息。

对于您的用例,我建议使用REST API。 Git钩子更适合在预先提交时运行单元测试或过时,以防止不良拉取请求