GitLab API查询指定分支提交:起始日期未包含的解决方法
GitLab API 获取提交时包含since起始日期提交的解决方案
GitLab API 的 since 参数默认仅返回提交时间大于指定时间的记录,而非「大于等于」,这就是你设置 since=2022-12-01T12:17:30.000+02:00 后,结果只从12月2日开始的原因——12月1日当天只有提交时间晚于12:17:30的记录才会被纳入,但你的返回结果里没有符合该条件的提交。
解决方法
针对这个问题,有两种调整方式:
方式一:覆盖起始日期全天的提交
将since参数的时间设为起始日期的00:00:00(对应你使用的时区),这样就能包含该日期当天所有提交。比如把原来的since_date改为:2022-12-01T00:00:00.000+02:00方式二:严格包含指定时间点的提交
如果需要精确包含等于原since时间点的提交,可以将since的时间往前调整1秒,利用API的「大于」逻辑覆盖目标时间点。比如原时间是2022-12-01T12:17:30.000+02:00,修改为:2022-12-01T12:17:29.000+02:00
修改后的curl命令示例
以方式二为例,调整后的命令如下:
curl -s --header "PRIVATE-TOKEN: <token>" "https://gitlab.example.com/api/v4/projects/ID/repository/commits?ref_name=${branch}&since=2022-12-01T12:17:29.000+02:00&until=${until_date}" | jq -r '.[] | .committed_date + " " + .title'
补充说明
first_parent=true 参数的作用是仅返回分支的第一父提交(排除合并提交的其他父分支记录),和日期范围的过滤逻辑无关,所以添加这个参数无法解决你的问题。
内容的提问来源于stack exchange,提问作者macder
相关产品推荐
相关产品推荐

