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 次删除。
我能够获取每次提交的统计信息(添加、删除、总计),但是如何获取总体#? 例如,如果一个 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 次删除。