Commit 169f16fb32091701bcaa962872ea35b5772a1539
1 parent
5a5d214d
Exists in
master
and in
4 other branches
Remove Commits#compare, add CompareController
Showing
7 changed files
with
106 additions
and
74 deletions
Show diff stats
app/controllers/commits_controller.rb
@@ -45,18 +45,6 @@ class CommitsController < ApplicationController | @@ -45,18 +45,6 @@ class CommitsController < ApplicationController | ||
45 | # end | 45 | # end |
46 | # end | 46 | # end |
47 | 47 | ||
48 | - def compare | ||
49 | - result = Commit.compare(project, params[:from], params[:to]) | ||
50 | - | ||
51 | - @commits = result[:commits] | ||
52 | - @commit = result[:commit] | ||
53 | - @diffs = result[:diffs] | ||
54 | - @refs_are_same = result[:same] | ||
55 | - @line_notes = [] | ||
56 | - | ||
57 | - @commits = CommitDecorator.decorate(@commits) | ||
58 | - end | ||
59 | - | ||
60 | def patch | 48 | def patch |
61 | @commit = project.commit(params[:id]) | 49 | @commit = project.commit(params[:id]) |
62 | 50 |
@@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
1 | +class CompareController < ApplicationController | ||
2 | + before_filter :project | ||
3 | + layout "project" | ||
4 | + | ||
5 | + # Authorize | ||
6 | + before_filter :add_project_abilities | ||
7 | + before_filter :authorize_read_project! | ||
8 | + before_filter :authorize_code_access! | ||
9 | + before_filter :require_non_empty_project | ||
10 | + | ||
11 | + def show | ||
12 | + result = Commit.compare(project, params[:from], params[:to]) | ||
13 | + | ||
14 | + @commits = result[:commits] | ||
15 | + @commit = result[:commit] | ||
16 | + @diffs = result[:diffs] | ||
17 | + @refs_are_same = result[:same] | ||
18 | + @line_notes = [] | ||
19 | + | ||
20 | + @commits = CommitDecorator.decorate(@commits) | ||
21 | + end | ||
22 | +end |
app/views/commits/compare.html.haml
@@ -1,53 +0,0 @@ | @@ -1,53 +0,0 @@ | ||
1 | -= render "head" | ||
2 | - | ||
3 | -%h3.page_title | ||
4 | - Compare View | ||
5 | -%hr | ||
6 | - | ||
7 | -%div | ||
8 | - %p.slead | ||
9 | - Fill input field with commit id like | ||
10 | - %code.label_branch 4eedf23 | ||
11 | - or branch/tag name like | ||
12 | - %code.label_branch master | ||
13 | - and press compare button for commits list, code diff. | ||
14 | - | ||
15 | - %br | ||
16 | - | ||
17 | - = form_tag compare_project_commits_path(@project), method: :get do | ||
18 | - .clearfix | ||
19 | - = text_field_tag :from, params[:from], placeholder: "master", class: "xlarge" | ||
20 | - = "..." | ||
21 | - = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge" | ||
22 | - - if @refs_are_same | ||
23 | - .alert | ||
24 | - %span Refs are the same | ||
25 | - .actions | ||
26 | - = submit_tag "Compare", class: "btn primary wide commits-compare-btn" | ||
27 | - | ||
28 | -- if @commits.present? | ||
29 | - %div.ui-box | ||
30 | - %h5.small Commits (#{@commits.count}) | ||
31 | - %ul.unstyled= render @commits | ||
32 | - | ||
33 | - - unless @diffs.empty? | ||
34 | - %h4 Diff | ||
35 | - = render "commits/diffs", diffs: @diffs | ||
36 | - | ||
37 | -:javascript | ||
38 | - $(function() { | ||
39 | - var availableTags = #{@project.ref_names.to_json}; | ||
40 | - | ||
41 | - $("#from").autocomplete({ | ||
42 | - source: availableTags, | ||
43 | - minLength: 1 | ||
44 | - }); | ||
45 | - | ||
46 | - $("#to").autocomplete({ | ||
47 | - source: availableTags, | ||
48 | - minLength: 1 | ||
49 | - }); | ||
50 | - | ||
51 | - disableButtonIfEmptyField('#to', '.commits-compare-btn'); | ||
52 | - }); | ||
53 | - |
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +%ul.nav.nav-tabs | ||
2 | + %li= render partial: 'shared/ref_switcher', locals: {destination: 'commits'} | ||
3 | + %li{class: "#{'active' if current_page?(project_commits_path(@project)) }"} | ||
4 | + = link_to project_commits_path(@project) do | ||
5 | + Commits | ||
6 | + %li{class: "#{'active' if current_page?(compare_project_commits_path(@project)) }"} | ||
7 | + = link_to compare_project_commits_path(@project) do | ||
8 | + Compare | ||
9 | + %li{class: "#{branches_tab_class}"} | ||
10 | + = link_to project_repository_path(@project) do | ||
11 | + Branches | ||
12 | + %span.badge= @project.repo.branch_count | ||
13 | + | ||
14 | + %li{class: "#{'active' if current_page?(tags_project_repository_path(@project)) }"} | ||
15 | + = link_to tags_project_repository_path(@project) do | ||
16 | + Tags | ||
17 | + %span.badge= @project.repo.tag_count | ||
18 | + | ||
19 | + - if current_page?(project_commits_path(@project)) && current_user.private_token | ||
20 | + %li.right | ||
21 | + %span.rss-icon | ||
22 | + = link_to project_commits_path(@project, :atom, { private_token: current_user.private_token, ref: @ref }), title: "Feed" do | ||
23 | + = image_tag "rss_ui.png", title: "feed" |
@@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
1 | += render "head" | ||
2 | + | ||
3 | +%h3.page_title | ||
4 | + Compare View | ||
5 | +%hr | ||
6 | + | ||
7 | +%div | ||
8 | + %p.slead | ||
9 | + Fill input field with commit id like | ||
10 | + %code.label_branch 4eedf23 | ||
11 | + or branch/tag name like | ||
12 | + %code.label_branch master | ||
13 | + and press compare button for commits list, code diff. | ||
14 | + | ||
15 | + %br | ||
16 | + | ||
17 | + = form_tag compare_project_commits_path(@project), method: :get do | ||
18 | + .clearfix | ||
19 | + = text_field_tag :from, params[:from], placeholder: "master", class: "xlarge" | ||
20 | + = "..." | ||
21 | + = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge" | ||
22 | + - if @refs_are_same | ||
23 | + .alert | ||
24 | + %span Refs are the same | ||
25 | + .actions | ||
26 | + = submit_tag "Compare", class: "btn primary wide commits-compare-btn" | ||
27 | + | ||
28 | +- if @commits.present? | ||
29 | + %div.ui-box | ||
30 | + %h5.small Commits (#{@commits.count}) | ||
31 | + %ul.unstyled= render @commits | ||
32 | + | ||
33 | + - unless @diffs.empty? | ||
34 | + %h4 Diff | ||
35 | + = render "commits/diffs", diffs: @diffs | ||
36 | + | ||
37 | +:javascript | ||
38 | + $(function() { | ||
39 | + var availableTags = #{@project.ref_names.to_json}; | ||
40 | + | ||
41 | + $("#from").autocomplete({ | ||
42 | + source: availableTags, | ||
43 | + minLength: 1 | ||
44 | + }); | ||
45 | + | ||
46 | + $("#to").autocomplete({ | ||
47 | + source: availableTags, | ||
48 | + minLength: 1 | ||
49 | + }); | ||
50 | + | ||
51 | + disableButtonIfEmptyField('#to', '.commits-compare-btn'); | ||
52 | + }); | ||
53 | + |
config/routes.rb
@@ -162,10 +162,6 @@ Gitlab::Application.routes.draw do | @@ -162,10 +162,6 @@ Gitlab::Application.routes.draw do | ||
162 | resources :commit, only: [:show], constraints: {id: /[[:alnum:]]{6,40}/} | 162 | resources :commit, only: [:show], constraints: {id: /[[:alnum:]]{6,40}/} |
163 | 163 | ||
164 | resources :commits, only: [:index, :show] do | 164 | resources :commits, only: [:index, :show] do |
165 | - collection do | ||
166 | - get :compare | ||
167 | - end | ||
168 | - | ||
169 | member do | 165 | member do |
170 | get :patch | 166 | get :patch |
171 | end | 167 | end |
@@ -194,6 +190,7 @@ Gitlab::Application.routes.draw do | @@ -194,6 +190,7 @@ Gitlab::Application.routes.draw do | ||
194 | resources :blob, only: [:show], constraints: {id: /.+/} | 190 | resources :blob, only: [:show], constraints: {id: /.+/} |
195 | # resources :raw, only: [:show], constraints: {id: /.+/} | 191 | # resources :raw, only: [:show], constraints: {id: /.+/} |
196 | resources :tree, only: [:show], constraints: {id: /.+/} | 192 | resources :tree, only: [:show], constraints: {id: /.+/} |
193 | + match "/compare/:from...:to" => "compare#show", as: "compare", constraints: {from: /.+/, to: /.+/} | ||
197 | end | 194 | end |
198 | 195 | ||
199 | root to: "dashboard#index" | 196 | root to: "dashboard#index" |
spec/routing/project_routing_spec.rb
@@ -289,16 +289,11 @@ describe CommitController, "routing" do | @@ -289,16 +289,11 @@ describe CommitController, "routing" do | ||
289 | end | 289 | end |
290 | end | 290 | end |
291 | 291 | ||
292 | -# compare_project_commits GET /:project_id/commits/compare(.:format) commits#compare | ||
293 | # patch_project_commit GET /:project_id/commits/:id/patch(.:format) commits#patch | 292 | # patch_project_commit GET /:project_id/commits/:id/patch(.:format) commits#patch |
294 | # project_commits GET /:project_id/commits(.:format) commits#index | 293 | # project_commits GET /:project_id/commits(.:format) commits#index |
295 | # POST /:project_id/commits(.:format) commits#create | 294 | # POST /:project_id/commits(.:format) commits#create |
296 | # project_commit GET /:project_id/commits/:id(.:format) commits#show | 295 | # project_commit GET /:project_id/commits/:id(.:format) commits#show |
297 | describe CommitsController, "routing" do | 296 | describe CommitsController, "routing" do |
298 | - it "to #compare" do | ||
299 | - get("/gitlabhq/commits/compare").should route_to('commits#compare', project_id: 'gitlabhq') | ||
300 | - end | ||
301 | - | ||
302 | it "to #patch" do | 297 | it "to #patch" do |
303 | get("/gitlabhq/commits/1/patch").should route_to('commits#patch', project_id: 'gitlabhq', id: '1') | 298 | get("/gitlabhq/commits/1/patch").should route_to('commits#patch', project_id: 'gitlabhq', id: '1') |
304 | end | 299 | end |
@@ -407,6 +402,13 @@ describe TreeController, "routing" do | @@ -407,6 +402,13 @@ describe TreeController, "routing" do | ||
407 | end | 402 | end |
408 | end | 403 | end |
409 | 404 | ||
405 | +describe CompareController, "routing" do | ||
406 | + it "to #show" do | ||
407 | + get("/gitlabhq/compare/master...stable").should route_to('compare#show', project_id: 'gitlabhq', from: 'master', to: 'stable') | ||
408 | + get("/gitlabhq/compare/issue/1234...stable").should route_to('compare#show', project_id: 'gitlabhq', from: 'issue/1234', to: 'stable') | ||
409 | + end | ||
410 | +end | ||
411 | + | ||
410 | # TODO: Pending | 412 | # TODO: Pending |
411 | # | 413 | # |
412 | # /:project_id/blame/*path | 414 | # /:project_id/blame/*path |