summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Beresford <aberesford@equalexperts.com>2018-04-06 15:58:45 +0100
committerAndrew Beresford <aberesford@equalexperts.com>2018-04-08 20:59:03 +0100
commit3a4086e22f2a4c837635f14bb6e9ae056299dc6c (patch)
treec7a72787ce86ca5b0ad419489cd8be67ebfb7bda
parent86ca1a77c58b508fc1b037c5fffbfb22fd992b42 (diff)
downloadgitlab-ce-3a4086e22f2a4c837635f14bb6e9ae056299dc6c.tar.gz
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.
-rw-r--r--changelogs/unreleased/feature-add_target_to_tags.yml5
-rw-r--r--doc/api/tags.md6
-rw-r--r--lib/api/entities.rb2
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/tag.json1
4 files changed, 13 insertions, 1 deletions
diff --git a/changelogs/unreleased/feature-add_target_to_tags.yml b/changelogs/unreleased/feature-add_target_to_tags.yml
new file mode 100644
index 00000000000..75816005e1f
--- /dev/null
+++ b/changelogs/unreleased/feature-add_target_to_tags.yml
@@ -0,0 +1,5 @@
+---
+title: Expose the target commit ID through the tag API
+merge_request:
+author:
+type: added
diff --git a/doc/api/tags.md b/doc/api/tags.md
index fa25dc76452..4af096c3c0c 100644
--- a/doc/api/tags.md
+++ b/doc/api/tags.md
@@ -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.
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index e35b1a0ff63..8aad320e376 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -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)
diff --git a/spec/fixtures/api/schemas/public_api/v4/tag.json b/spec/fixtures/api/schemas/public_api/v4/tag.json
index 52cfe86aeeb..10d4edb7ffb 100644
--- a/spec/fixtures/api/schemas/public_api/v4/tag.json
+++ b/spec/fixtures/api/schemas/public_api/v4/tag.json
@@ -10,6 +10,7 @@
"name": { "type": "string" },
"message": { "type": ["string", "null"] },
"commit": { "$ref": "commit/basic.json" },
+ "target": { "type": "string" },
"release": {
"oneOf": [
{ "type": "null" },