gitpython git diff_Python - 通过API获取git diff的文件名列表

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值