GitLab API - 获取总体代码行数

GitLab API - get the overall # of lines of code

我能够获取每次提交的统计信息(添加、删除、总计),但是如何获取总体#? 例如,如果一个 MR 有 30 次提交,我需要净代码行数 added\deleted,您可以在右上角看到它。 这 # 不是所有 # 每次提交的总和。 因此,我需要一个 API returns MR 级别的净代码行数 added\removed(无论有多少次提交)。 例如,如果我有 2 个提交:第一个添加 10 行,第二个删除完全相同的 10 行,那么 net # 是 0.


场景如下: 我有一个有 30 次提交的 MR。 GitLab API 支持获取每次提交(单独)的统计信息(代码行 added\deleted)。 如果我进入 GitLab UI,转到 MR \ Changes,我看到的行数 added\deleted 不是我通过 API 获得的所有提交统计数据的总和. 那是我的问题。 一个更简单的例子:假设我有 2 次提交,一次添加了 10 行代码,而第二次提交删除了完全相同的 10 行代码。使用 API,我得到了总和,即添加了 20 个 LOC。但是,如果我进入 GitLab UI \ Changes,它会显示 0(零),这是正确的;这是总体 chgs 的净值。这是我注意到的不一致。

要为 MR 执行此操作,您将使用 MR changes API 并计算 changes[].diff 字段中以 +- 开头的行的出现次数以获取分别增减。

以bash和gitlab-org/gitlab-runner!3195为例:

GITLAB_HOST="https://gitlab.com"
PROJECT_ID="250833"
MR_ID="3195"

URL="${GITLAB_HOST}/api/v4/projects/${PROJECT_ID}/merge_requests/${MR_ID}/changes"
DIFF=$(curl ${URL} | jq -r ".changes[].diff")
ADDITIONS=$(grep -E "^\+" <<< "$DIFF")
DELETIONS=$(grep -E "^\-" <<< "$DIFF")
NUM_ADDITIONS=$(wc -l <<< "$ADDITIONS")
NUM_DELETIONS=$(wc -l <<< "$DELETIONS")
echo "${MR_ID} has ${NUM_ADDITIONS} additions and ${NUM_DELETIONS} deletions"

输出为

3195 has 9 additions and 2 deletions

这与UI匹配,也显示9个添加和2个删除

如您所见,这是您所描述场景的代表性示例,因为此 MR 中 个人提交 的总和是 13 次添加和 6 次删除。