SHELL
Shell
中, 通過執(zhí)行
git diff --name-only HASH1 HASH2
可以很簡單實現(xiàn)獲取兩次commit之間有改動的文件列表, 但是一般 Git API 不會提供該功能, 因此通過簡單的幾行代碼實現(xiàn), 歡迎在大家的項目中使用!
PYTHON
以 Bitbucket
為例:
import requests
class BitbucketAnalysis(object):
def __init__(self, owner, proj, pr_id):
# api 在各大 Git 版本庫官網(wǎng)均能查到, 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):
# 發(fā)請求時, 若為私人項目, 需要帶上 auth 參數(shù), 傳輸用戶名密碼用于驗證
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