美文网首页测试开发实践软件测试程序员
Python - 通过API获取git diff的文件名列表

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

作者: 严北 | 来源:发表于2018-03-28 14:37 被阅读25次

    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
    

    相关文章

      网友评论

        本文标题:Python - 通过API获取git diff的文件名列表

        本文链接:https://www.haomeiwen.com/subject/ejnycftx.html