Allow straight diff in Compare API
Repository compare API now allows choosing straight (from..to) or merge-base diff (from...to)
This commit is contained in:
parent
2bac2918b2
commit
591edb439c
4 changed files with 33 additions and 1 deletions
5
changelogs/unreleased/straight-comparision-mode.yml
Normal file
5
changelogs/unreleased/straight-comparision-mode.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Allow straight diff in Compare API
|
||||
merge_request: 20120
|
||||
author: Maciej Nowak
|
||||
type: added
|
|
@ -130,6 +130,7 @@ Parameters:
|
|||
- `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
|
||||
- `from` (required) - the commit SHA or branch name
|
||||
- `to` (required) - the commit SHA or branch name
|
||||
- `straight` (optional) - comparison method, `true` for direct comparison between `from` and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`)'. Default is `false`.
|
||||
|
||||
```
|
||||
GET /projects/:id/repository/compare?from=master&to=feature
|
||||
|
|
|
@ -100,9 +100,10 @@ module API
|
|||
params do
|
||||
requires :from, type: String, desc: 'The commit, branch name, or tag name to start comparison'
|
||||
requires :to, type: String, desc: 'The commit, branch name, or tag name to stop comparison'
|
||||
optional :straight, type: Boolean, desc: 'Comparison method, `true` for direct comparison between `from` and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`)', default: false
|
||||
end
|
||||
get ':id/repository/compare' do
|
||||
compare = Gitlab::Git::Compare.new(user_project.repository.raw_repository, params[:from], params[:to])
|
||||
compare = Gitlab::Git::Compare.new(user_project.repository.raw_repository, params[:from], params[:to], straight: params[:straight])
|
||||
present compare, with: Entities::Compare
|
||||
end
|
||||
|
||||
|
|
|
@ -288,6 +288,9 @@ describe API::Repositories do
|
|||
|
||||
shared_examples_for 'repository compare' do
|
||||
it "compares branches" do
|
||||
expect(::Gitlab::Git::Compare).to receive(:new).with(anything, anything, anything, {
|
||||
straight: false
|
||||
}).and_call_original
|
||||
get api(route, current_user), from: 'master', to: 'feature'
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
|
@ -295,6 +298,28 @@ describe API::Repositories do
|
|||
expect(json_response['diffs']).to be_present
|
||||
end
|
||||
|
||||
it "compares branches with explicit merge-base mode" do
|
||||
expect(::Gitlab::Git::Compare).to receive(:new).with(anything, anything, anything, {
|
||||
straight: false
|
||||
}).and_call_original
|
||||
get api(route, current_user), from: 'master', to: 'feature', straight: false
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(json_response['commits']).to be_present
|
||||
expect(json_response['diffs']).to be_present
|
||||
end
|
||||
|
||||
it "compares branches with explicit straight mode" do
|
||||
expect(::Gitlab::Git::Compare).to receive(:new).with(anything, anything, anything, {
|
||||
straight: true
|
||||
}).and_call_original
|
||||
get api(route, current_user), from: 'master', to: 'feature', straight: true
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(json_response['commits']).to be_present
|
||||
expect(json_response['diffs']).to be_present
|
||||
end
|
||||
|
||||
it "compares tags" do
|
||||
get api(route, current_user), from: 'v1.0.0', to: 'v1.1.0'
|
||||
|
||||
|
|
Loading…
Reference in a new issue