如何按用户查看GitLab累计提交历史
How to view GitLab cummulative commit history by user
我们刚刚从 SVN 迁移到 GitLab,我想查看我参与的所有项目的所有提交历史记录。跨越十年。我可以看到单个项目的提交历史记录,但看不到我在组织中从事的“全部”项目。想查看累计提交历史。
GitLab Enterprise Edition 是否为具有 Maintainer 角色的用户提供这种可见性?如果确实如此,任何人都可以指出我如何。我浏览了文档和几篇文章,但找不到任何内容。
遍历项目 ID 并提取 repository contributors via the API 应该有助于提供该数据,尽管它只能通过自定义脚本进行。
似乎确实没有完善的功能,只是您个人资料中的混合 Activity
。
查看所有项目的提交历史的一种方法是使用 Gitlab API
特别是项目 API,以便检索您是 https://docs.gitlab.com/ee/api/projects.html#list-all-projects
成员的所有项目
GET /projects
检索 project id
并将其传递给提交 API https://docs.gitlab.com/ee/api/commits.html#list-repository-commits
GET /projects/:id/repository/commits
最后我们可以将它们组合成下面的bash脚本
#!/bin/bash
AUTHOR=
ACCESS_TOKEN=
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" "https://gitlab.com/api/v4/projects?membership=true" | jq '.[] | "\(.id) \(.name)"' | while read line
do
line=$(echo $line | sed 's/^"\(.*\)"$//')
PROJECT_ID=$(echo $line | cut -d " " -f1)
PROJECT_NAME=$(echo $line | cut -d " " -f2-)
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT_ID/repository/commits?per_page=1000000" | jq --arg v "$AUTHOR" '.[] | select(.author_name==$v) |"|| DATE=\(.authored_date) || SHA=\(.id) || MESSAGE=\(.message) || CHANGES_URL=\(.web_url)"' | while read commit
do
echo PROJECT=$PROJECT_NAME ${commit:1:-1}
echo \n
done
done
执行脚本:
./script "AUTHOR_NAME" "ACCESS_TOKEN"
输出将包含 AUTHOR_NAME 所属项目的所有提交,格式如下
PROJECT=<PROJECT_NAME> || DATE=<DATE_COMMITED> || SHA=<COMMIT_SHA> || MESSAGE=<COMMIT_MESSAGE> || CHANGES_URL=URL_TO_VIEW_THE_COMMIT_CHANGES
我们刚刚从 SVN 迁移到 GitLab,我想查看我参与的所有项目的所有提交历史记录。跨越十年。我可以看到单个项目的提交历史记录,但看不到我在组织中从事的“全部”项目。想查看累计提交历史。
GitLab Enterprise Edition 是否为具有 Maintainer 角色的用户提供这种可见性?如果确实如此,任何人都可以指出我如何。我浏览了文档和几篇文章,但找不到任何内容。
遍历项目 ID 并提取 repository contributors via the API 应该有助于提供该数据,尽管它只能通过自定义脚本进行。
似乎确实没有完善的功能,只是您个人资料中的混合 Activity
。
查看所有项目的提交历史的一种方法是使用 Gitlab API
特别是项目 API,以便检索您是 https://docs.gitlab.com/ee/api/projects.html#list-all-projects
成员的所有项目GET /projects
检索 project id
并将其传递给提交 API https://docs.gitlab.com/ee/api/commits.html#list-repository-commits
GET /projects/:id/repository/commits
最后我们可以将它们组合成下面的bash脚本
#!/bin/bash
AUTHOR=
ACCESS_TOKEN=
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" "https://gitlab.com/api/v4/projects?membership=true" | jq '.[] | "\(.id) \(.name)"' | while read line
do
line=$(echo $line | sed 's/^"\(.*\)"$//')
PROJECT_ID=$(echo $line | cut -d " " -f1)
PROJECT_NAME=$(echo $line | cut -d " " -f2-)
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT_ID/repository/commits?per_page=1000000" | jq --arg v "$AUTHOR" '.[] | select(.author_name==$v) |"|| DATE=\(.authored_date) || SHA=\(.id) || MESSAGE=\(.message) || CHANGES_URL=\(.web_url)"' | while read commit
do
echo PROJECT=$PROJECT_NAME ${commit:1:-1}
echo \n
done
done
执行脚本:
./script "AUTHOR_NAME" "ACCESS_TOKEN"
输出将包含 AUTHOR_NAME 所属项目的所有提交,格式如下
PROJECT=<PROJECT_NAME> || DATE=<DATE_COMMITED> || SHA=<COMMIT_SHA> || MESSAGE=<COMMIT_MESSAGE> || CHANGES_URL=URL_TO_VIEW_THE_COMMIT_CHANGES