We've been asked to generate metrics around how many code reviews we have been doing. Is there a way in Stash/Git to extract historic pull requests performed on the repo? In particular, the following would be useful:
As already suggested by Robbie Averill, you can use the Stash REST APIs for this, more specifically the Stash Core REST API, which provides REST resources for core Stash functionality such as server administration, projects, repositories, pull requests and user management:
GET
/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests yields the paged list of open pull requests against the repo in question. The response contains most of the information you are looking for already, notably the pull request dates, the author
, reviewers
and even participants
:
{
"size": 1,
"limit": 25,
"isLastPage": true,
"values": [
{
"id": 101,
"version": 1,
"title": "Talking Nerdy",
"description": "It’s a kludge, but put the tuple from the database in the cache.",
"state": "OPEN",
"open": true,
"closed": false,
"createdDate": 1359075920,
"updatedDate": 1359085920,
"fromRef": {
"id": "refs/heads/feature-ABC-123",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"toRef": {
"id": "refs/heads/master",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"locked": false,
"author": {
"user": {
"name": "tom",
"emailAddress": "[email protected]",
"id": 115026,
"displayName": "Tom",
"active": true,
"slug": "tom",
"type": "NORMAL"
},
"role": "AUTHOR",
"approved": true
},
"reviewers": [
{
"user": {
"name": "jcitizen",
"emailAddress": "[email protected]",
"id": 101,
"displayName": "Jane Citizen",
"active": true,
"slug": "jcitizen",
"type": "NORMAL"
},
"role": "REVIEWER",
"approved": true
}
],
"participants": [
{
"user": {
"name": "dick",
"emailAddress": "[email protected]",
"id": 3083181,
"displayName": "Dick",
"active": true,
"slug": "dick",
"type": "NORMAL"
},
"role": "PARTICIPANT",
"approved": false
},
{
"user": {
"name": "harry",
"emailAddress": "[email protected]",
"id": 99049120,
"displayName": "Harry",
"active": true,
"slug": "harry",
"type": "NORMAL"
},
"role": "PARTICIPANT",
"approved": true
}
],
"link": {
"url": "http://link/to/pullrequest",
"rel": "self"
},
"links": {
"self": [
{
"href": "http://link/to/pullrequest"
}
]
}
}
],
"start": 0
}
What is missing still is the exact date of approval, though you can approximate it from the pull request closed
date if you happen to use Checks for merging pull requests and require at least one approval.
GET
on /rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities should return these details per reviewer, but unfortunately the fromType
is only documented to support either COMMENT or ACTIVITY, but not APPROVAL.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With