Expose the target commit ID through the tag API
This is useful for annotated tags, where the deferenced target is not the same as the tag object. At the moment there is no way to differentiate the two through the tag API. This change adds a "target" property and leaves the existing "commit" property alone so that existing behaviour is not altered.
This commit is contained in:
parent
86ca1a77c5
commit
3a4086e22f
4 changed files with 13 additions and 1 deletions
5
changelogs/unreleased/feature-add_target_to_tags.yml
Normal file
5
changelogs/unreleased/feature-add_target_to_tags.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Expose the target commit ID through the tag API
|
||||
merge_request:
|
||||
author:
|
||||
type: added
|
|
@ -42,6 +42,7 @@ Parameters:
|
|||
"description": "Amazing release. Wow"
|
||||
},
|
||||
"name": "v1.0.0",
|
||||
"target": "2695effb5807a22ff3d138d593fd856244e155e7",
|
||||
"message": null
|
||||
}
|
||||
]
|
||||
|
@ -73,6 +74,7 @@ Example Response:
|
|||
{
|
||||
"name": "v5.0.0",
|
||||
"message": null,
|
||||
"target": "60a8ff033665e1207714d6670fcd7b65304ec02f",
|
||||
"commit": {
|
||||
"id": "60a8ff033665e1207714d6670fcd7b65304ec02f",
|
||||
"short_id": "60a8ff03",
|
||||
|
@ -132,12 +134,16 @@ Parameters:
|
|||
"description": "Amazing release. Wow"
|
||||
},
|
||||
"name": "v1.0.0",
|
||||
"target: "2695effb5807a22ff3d138d593fd856244e155e7",
|
||||
"message": null
|
||||
}
|
||||
```
|
||||
The message will be `null` when creating a lightweight tag otherwise
|
||||
it will contain the annotation.
|
||||
|
||||
The target will contain the tag objects ID when creating annotated tags,
|
||||
otherwise it will contain the commit ID when creating lightweight tags.
|
||||
|
||||
In case of an error,
|
||||
status code `405` with an explaining error message is returned.
|
||||
|
||||
|
|
|
@ -928,7 +928,7 @@ module API
|
|||
end
|
||||
|
||||
class Tag < Grape::Entity
|
||||
expose :name, :message
|
||||
expose :name, :message, :target
|
||||
|
||||
expose :commit, using: Entities::Commit do |repo_tag, options|
|
||||
options[:project].repository.commit(repo_tag.dereferenced_target)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"name": { "type": "string" },
|
||||
"message": { "type": ["string", "null"] },
|
||||
"commit": { "$ref": "commit/basic.json" },
|
||||
"target": { "type": "string" },
|
||||
"release": {
|
||||
"oneOf": [
|
||||
{ "type": "null" },
|
||||
|
|
Loading…
Reference in a new issue