Commit a73ee1cc authored by Lin Jen-Shin's avatar Lin Jen-Shin

Merge branch 'patch-54' into 'master'

Add ref (branch/tag) parameter to project search API

See merge request gitlab-org/gitlab-ce!28069
parents f7ebea04 a4e9259d
---
title: Added ref querystring parameter to project search API to allow searching on branches/tags other than the default
merge_request: 28069
author: Lee Tickett
type: added
...@@ -556,6 +556,7 @@ GET /projects/:id/search ...@@ -556,6 +556,7 @@ GET /projects/:id/search
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `scope` | string | yes | The scope to search in | | `scope` | string | yes | The scope to search in |
| `search` | string | yes | The search query | | `search` | string | yes | The search query |
| `ref` | string | no | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs. |
Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users. Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users.
...@@ -850,7 +851,7 @@ Blobs searches are performed on both filenames and contents. Search results: ...@@ -850,7 +851,7 @@ Blobs searches are performed on both filenames and contents. Search results:
times in the content. times in the content.
```bash ```bash
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/6/search?scope=blobs&search=installation curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/6/search?scope=blobs&search=installation&ref=feature
``` ```
Example response: Example response:
...@@ -863,7 +864,7 @@ Example response: ...@@ -863,7 +864,7 @@ Example response:
"data": "```\n\n## Installation\n\nQuick start using the [pre-built", "data": "```\n\n## Installation\n\nQuick start using the [pre-built",
"filename": "README.md", "filename": "README.md",
"id": null, "id": null,
"ref": "master", "ref": "feature",
"startline": 46, "startline": 46,
"project_id": 6 "project_id": 6
} }
......
...@@ -112,12 +112,13 @@ module API ...@@ -112,12 +112,13 @@ module API
type: String, type: String,
desc: 'The scope of the search', desc: 'The scope of the search',
values: Helpers::SearchHelpers.project_search_scopes values: Helpers::SearchHelpers.project_search_scopes
optional :ref, type: String, desc: 'The name of a repository branch or tag. If not given, the default branch is used'
use :pagination use :pagination
end end
get ':id/(-/)search' do get ':id/(-/)search' do
check_users_search_allowed! check_users_search_allowed!
present search(project_id: user_project.id), with: entity present search({ project_id: user_project.id, repository_ref: params[:ref] }), with: entity
end end
end end
end end
......
...@@ -414,6 +414,13 @@ describe API::Search do ...@@ -414,6 +414,13 @@ describe API::Search do
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
expect(json_response.size).to eq(11) expect(json_response.size).to eq(11)
end end
it 'by ref' do
get api("/projects/#{repo_project.id}/search", user), params: { scope: 'blobs', search: 'This file is used in tests for ci_environments_status', ref: 'pages-deploy' }
expect(response).to have_gitlab_http_status(200)
expect(json_response.size).to eq(1)
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment