默认情况下,API GET /projects/:id/repository/commits
获取的是主分支的提交记录,但我想获取其他分支的提交记录。
GET /projects/:id/repository/commits?ref_name=my_branch_name
per_page
属性值设置为,例如,9999
。 - Dawid Gałecki我将补充K.Gol的回答:
需要添加参数:per_page
和page
。
对于参数per_page
,超过100的值将被忽略。
你可以使用我的递归 Node.js 代码获取特定分支的所有提交记录:
class GitlabAPI {
host = "https://gitlab.com/api/v4";
project = null;
constructor(host, project) {
this.host = host;
this.project = project;
}
async loadCommits(branch, commits = [], page = 1) {
const url = `${this.host}/projects/${this.project}/repository/commits`;
const response = await axios.get(url, {
params: { all: "true", per_page: 100, page, ref_name: branch },
});
console.log(`Parse ${page} page, results: ${response.data.length} commits`);
if (response.data.length > 0) {
return await this.loadCommits(branch, commits.concat(response.data), page + 1);
} else {
return commits;
}
}
async commits(branch) {
try {
const commits = await this.loadCommits(branch);
return commits;
} catch (error) {
console.log(error);
}
}
}
好了,完成:
const host = process.env.GITLAB_HOST;
const project_id = 325;
const branch = "master";
const GL = new GitlabAPI(host, project_id);
const commits = await GL.commits(branch);
编程愉快!
ref_name
属性。 - Jawad