Commit 169f16fb32091701bcaa962872ea35b5772a1539

Authored by Robert Speicher
1 parent 5a5d214d

Remove Commits#compare, add CompareController

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
app/controllers/compare_controller.rb 0 → 100644
@@ -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 -  
app/views/compare/_head.html.haml 0 → 100644
@@ -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"
app/views/compare/show.html.haml 0 → 100644
@@ -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, &quot;routing&quot; do @@ -289,16 +289,11 @@ describe CommitController, &quot;routing&quot; 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, &quot;routing&quot; do @@ -407,6 +402,13 @@ describe TreeController, &quot;routing&quot; 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