Skip to content
Snippets Groups Projects
Commit 591edb43 authored by Maciej Nowak's avatar Maciej Nowak
Browse files

Allow straight diff in Compare API

Repository compare API now allows choosing straight (from..to) or merge-base diff (from...to)
parent 2bac2918
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
---
title: Allow straight diff in Compare API
merge_request: 20120
author: Maciej Nowak
type: added
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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)
Loading
Loading
@@ -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
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment