#! -*- encoding:utf-8 -*-
import time, datetime
import re,json
import requests
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
data = {
"username":"account",
"password":"test001"
}
login_url = "htttp://***gerrit.com/login/%23%2Fq%sFstaus%3Amerged"
session = requests.Session()
resp = session.post(login_url, data)
GerritAccount_Cookie = session.cookies.get_dict()["GerritAccout"]
headers["Cookie"] = "GerritAccount=" + GerritAccount_Cookie
def commitRevison(url, num):
dataUrl = url + "/changes/" + num + "/detail?O=5004"
data = requests.get(dataUrl, headers = headers).text
remove = re.compile("\)\]\}\'")
data = data.replace(')]}\'',"")
data = re.sub(remove,"",data)
data_json = json.loads(data)
reversion = data_json["current_revision"]
return reversion
def commitFiles(url, num, revison):
dataUrl = url + "/changes/" + num + "/revisons/" + revison + "/files"
data = requests.get(dataUrl, headers=headers).text
remove = re.compile("\)\]\}\'")
data = data.replace(')]}\'', "")
data = re.sub(remove, "", data)
data_json = json.loads(data)
data_json.pop("/COMMIT_MGS")
Files = data_json.keys()
return Files
def commit_lists(url,branch):
dataUrl = url + "/changes/?q=status:merged&n=25&O=81"
data = requests.get(dataUrl, headers=headers).text
remove = re.compile("\)\]\}\'")
data = data.replace(')]}\'', "")
data = re.sub(remove, "", data)
data_json = json.loads(data)
now =datetime.datetime.now()
one_day_ago = now + datetime.timedelta(days=-1)#一天前的时间
commit_information = []
for i in data_json:
if i["branch"] == branch:
timestring = i["submitted"].split(".")[0]
timestamp = time.mktime(timestring,"%Y-%m-%d %H:%M:%S")
datetime_sruct = datetime.datetime.fromtimestamp(timestamp) + datetime.timedelta(hours=8)#utc时间转化 loacl
submittedTime = datetime_sruct.strftime("%Y-%m-%d %H:%M:%S")
if submittedTime >= one_day_ago.strftime("%Y-%m-%d %H:%M:%S"):
committer = i["owner"]["name"]
projectName = i["project"]
projectBranch = i["branch"]
commitNum = str(i['_number'])
reversion = commitReversion(url, commitNum)
files = commitFiles(url, commitNum)
detial_url = url + "/#/c/" + commitNum
temp = {}
temp["Committer"] = committer
temp["Project"] = projectName
temp["Branch"] = projectBranch
temp["Files"] = files
temp["Link"] = detial_url
commit_information.append(temp)
else:
print("没有新代码合入")
return commit_information
if __name__ == "__main__":
commit_lists("gerrit地址","分支名")