SHELL
Shell
中, 通过执行
git diff --name-only HASH1 HASH2
可以很简单实现获取两次commit之间有改动的文件列表, 但是一般 Git API 不会提供该功能, 因此通过简单的几行代码实现, 欢迎在大家的项目中使用!
PYTHON
以 Bitbucket
为例:
import requests
class BitbucketAnalysis(object):
def __init__(self, owner, proj, pr_id):
# api 在各大 Git 版本库官网均能查到, diff_api 是 Bitbucket
# 提供的查询某次pull request 修改具体内容的接口
self.pr_api = "https://api.bitbucket.org/2.0/repositories/%s/%s/pullrequests/%s" % (
owner, proj, pr_id)
self.diff_api = self.pr_api + "/diff"
def get_file_changed(self):
# 发请求时, 若为私人项目, 需要带上 auth 参数, 传输用户名密码用于验证
diff_res = requests.get(self.diff_api, auth=(USERNAME, PASSWORD))
file_changed = []
for line in diff_res.text.splitlines():
# 有改动的文件都是以 "--- a/xxx" 格式输出, 因此判断行首
# 为 "---" 三个连接符来判断该行输出了修改过的文件;
# 也可以加上判断行末是否为自己需要记录的文件格式
if '---' in line[:3] and ".py" in line[-3:]:
# 将第六个字符之后作为文件名添加到列表即可
file_changed.append(line[6:-])
return file_changed