我可以使用此命令成功访问有关用户的信息:
curl http://gitlab.$INTERNAL_SERVER.com/api/v3/\
users/$USER_ID\?private_token\=$GITLAB_TOKEN
但是,我找不到API端点来获取用户推送到GitLab服务器的提交列表。是否存在包含此信息的网址?
答案 0 :(得分:3)
据我所知,这样的API端点不存在。基本上我能想出的最好的就是这个流程:
我正在使用java-gitlab-api来访问Gitlab服务器,所以不要轻松卷曲样本(抱歉!)。
答案 1 :(得分:0)
看起来您可以使用“事件”端点获取提交列表
data = requests.get(host + "/api/v4/users/{id}/events".format(id=user_id),
params={"action": "pushed"})
您可以将params
更新为
params.update({"before": before_date})
before date
可能是数据中的最后一个元素,您可以连续循环以获取用户从特定日期开始的所有提交
答案 2 :(得分:0)
我写了一个Python脚本,该脚本执行@demaniak的建议。享受
import requests
import ujson as json
header ={...}
def get_all_commits_gitlab(project_id, username):
json_loads_of_commit = []
f_date = "2022-01-01T00:00:42.000+01:00"
params = {"until": f_date}
url_p = "https://gitlab.xxx.xx/api/v4/projects/%d/\
repository/commits" % project_id
r = requests.get(url_p, params, headers=header)
c = 0
while r.status_code == 200:
jsLoad = json.loads(r.content)
newDate = jsLoad[-1]["committed_date"]
if (params["until"] == newDate):
break
user_commits = []
for cm in jsLoad:
if cm["author_name"] == username:
user_commits.append(cm)
c += 1
json_loads_of_commit.append(user_commits)
params["until"] = newDate
r = requests.get(url_p, params, headers=header)
print("project %d: %d commits by user %s, \
the first one %s" % (project_id, c, username, newDate))
return json_loads_of_commit