Commit a243253b10244e8a3b62c40b686b52ac61a3adc8
1 parent
edd81a79
Exists in
master
and in
4 other branches
Refactored project archive. Improved MR usability form
Showing
5 changed files
with
96 additions
and
53 deletions
Show diff stats
app/controllers/merge_requests_controller.rb
... | ... | @@ -73,29 +73,21 @@ class MergeRequestsController < ApplicationController |
73 | 73 | @merge_request = @project.merge_requests.new(params[:merge_request]) |
74 | 74 | @merge_request.author = current_user |
75 | 75 | |
76 | - respond_to do |format| | |
77 | - if @merge_request.save | |
78 | - @merge_request.reload_code | |
79 | - format.html { redirect_to [@project, @merge_request], notice: 'Merge request was successfully created.' } | |
80 | - format.json { render json: @merge_request, status: :created, location: @merge_request } | |
81 | - else | |
82 | - format.html { render action: "new" } | |
83 | - format.json { render json: @merge_request.errors, status: :unprocessable_entity } | |
84 | - end | |
76 | + if @merge_request.save | |
77 | + @merge_request.reload_code | |
78 | + redirect_to [@project, @merge_request], notice: 'Merge request was successfully created.' | |
79 | + else | |
80 | + render action: "new" | |
85 | 81 | end |
86 | 82 | end |
87 | 83 | |
88 | 84 | def update |
89 | - respond_to do |format| | |
90 | - if @merge_request.update_attributes(params[:merge_request].merge(:author_id_of_changes => current_user.id)) | |
91 | - @merge_request.reload_code | |
92 | - @merge_request.mark_as_unchecked | |
93 | - format.html { redirect_to [@project, @merge_request], notice: 'Merge request was successfully updated.' } | |
94 | - format.json { head :ok } | |
95 | - else | |
96 | - format.html { render action: "edit" } | |
97 | - format.json { render json: @merge_request.errors, status: :unprocessable_entity } | |
98 | - end | |
85 | + if @merge_request.update_attributes(params[:merge_request].merge(:author_id_of_changes => current_user.id)) | |
86 | + @merge_request.reload_code | |
87 | + @merge_request.mark_as_unchecked | |
88 | + redirect_to [@project, @merge_request], notice: 'Merge request was successfully updated.' | |
89 | + else | |
90 | + render action: "edit" | |
99 | 91 | end |
100 | 92 | end |
101 | 93 | |
... | ... | @@ -122,7 +114,6 @@ class MergeRequestsController < ApplicationController |
122 | 114 | |
123 | 115 | respond_to do |format| |
124 | 116 | format.html { redirect_to project_merge_requests_url(@project) } |
125 | - format.json { head :ok } | |
126 | 117 | end |
127 | 118 | end |
128 | 119 | ... | ... |
app/controllers/repositories_controller.rb
... | ... | @@ -27,22 +27,14 @@ class RepositoriesController < ApplicationController |
27 | 27 | render_404 and return |
28 | 28 | end |
29 | 29 | |
30 | - ref = params[:ref] || @project.root_ref | |
31 | - commit = @project.commit(ref) | |
32 | - render_404 and return unless commit | |
33 | - | |
34 | - # Build file path | |
35 | - file_name = @project.code + "-" + commit.id.to_s + ".tar.gz" | |
36 | - storage_path = File.join(Rails.root, "tmp", "repositories", @project.code) | |
37 | - file_path = File.join(storage_path, file_name) | |
38 | - | |
39 | - # Create file if not exists | |
40 | - unless File.exists?(file_path) | |
41 | - FileUtils.mkdir_p storage_path | |
42 | - file = @project.repo.archive_to_file(ref, nil, file_path) | |
43 | - end | |
44 | 30 | |
45 | - # Send file to user | |
46 | - send_file file_path | |
31 | + file_path = @project.archive_repo(params[:ref]) | |
32 | + | |
33 | + if file_path | |
34 | + # Send file to user | |
35 | + send_file file_path | |
36 | + else | |
37 | + render_404 | |
38 | + end | |
47 | 39 | end |
48 | 40 | end | ... | ... |
app/roles/repository.rb
... | ... | @@ -117,4 +117,28 @@ module Repository |
117 | 117 | def root_ref? branch |
118 | 118 | root_ref == branch |
119 | 119 | end |
120 | + | |
121 | + # Archive Project to .tar.gz | |
122 | + # | |
123 | + # Already packed repo archives stored at | |
124 | + # app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz | |
125 | + # | |
126 | + def archive_repo ref | |
127 | + ref = ref || self.root_ref | |
128 | + commit = self.commit(ref) | |
129 | + return nil unless commit | |
130 | + | |
131 | + # Build file path | |
132 | + file_name = self.code + "-" + commit.id.to_s + ".tar.gz" | |
133 | + storage_path = File.join(Rails.root, "tmp", "repositories", self.code) | |
134 | + file_path = File.join(storage_path, file_name) | |
135 | + | |
136 | + # Create file if not exists | |
137 | + unless File.exists?(file_path) | |
138 | + FileUtils.mkdir_p storage_path | |
139 | + file = self.repo.archive_to_file(ref, nil, file_path) | |
140 | + end | |
141 | + | |
142 | + file_path | |
143 | + end | |
120 | 144 | end | ... | ... |
app/views/merge_requests/_form.html.haml
... | ... | @@ -5,23 +5,43 @@ |
5 | 5 | - @merge_request.errors.full_messages.each do |msg| |
6 | 6 | %li= msg |
7 | 7 | |
8 | - .control-group | |
9 | - = f.label :title, :class => "control-label" | |
10 | - .controls= f.text_area :title, :class => "input-xxlarge", :maxlength => 255, :rows => 5 | |
11 | - .control-group | |
12 | - = f.label :source_branch, "From", :class => "control-label" | |
13 | - .controls | |
14 | - = f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") | |
15 | - .mr_source_commit | |
16 | - .control-group | |
17 | - = f.label :target_branch, "To", :class => "control-label" | |
18 | - .controls | |
19 | - = f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") | |
20 | - .mr_target_commit | |
8 | + | |
9 | + | |
10 | + %h3.padded.cgray 1. Select Branches | |
11 | + .row | |
12 | + .span6 | |
13 | + .ui-box | |
14 | + %h5 From (Head Branch) | |
15 | + .body | |
16 | + .padded | |
17 | + = f.label :source_branch, "From", :class => "control-label" | |
18 | + .controls | |
19 | + = f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") | |
20 | + %hr | |
21 | + .mr_source_commit | |
22 | + .clearfix | |
23 | + | |
24 | + .span6 | |
25 | + .ui-box | |
26 | + %h5 To (Base Branch) | |
27 | + .body | |
28 | + .padded | |
29 | + = f.label :target_branch, "To", :class => "control-label" | |
30 | + .controls | |
31 | + = f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") | |
32 | + %hr | |
33 | + .mr_target_commit | |
34 | + .clearfix | |
35 | + | |
36 | + %h3.padded.cgray 2. Fill info | |
21 | 37 | .clearfix |
22 | 38 | = f.label :assignee_id, "Assign to", :class => "control-label" |
23 | 39 | .controls= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") |
24 | 40 | |
41 | + .control-group | |
42 | + = f.label :title, :class => "control-label" | |
43 | + .controls= f.text_field :title, :class => "input-xxlarge pad", :maxlength => 255, :rows => 5 | |
44 | + | |
25 | 45 | .form-actions |
26 | 46 | = f.submit 'Save', :class => "btn-primary btn" |
27 | 47 | - if @merge_request.new_record? |
... | ... | @@ -38,14 +58,18 @@ |
38 | 58 | $('select#merge_request_assignee_id').chosen(); |
39 | 59 | $('select#merge_request_source_branch').chosen(); |
40 | 60 | $('select#merge_request_target_branch').chosen(); |
61 | + var source_branch = $("#merge_request_source_branch"); | |
62 | + var target_branch = $("#merge_request_target_branch"); | |
41 | 63 | |
64 | + | |
65 | + $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); | |
66 | + $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() }); | |
42 | 67 | |
43 | - | |
44 | - $("#merge_request_source_branch").live("change", function() { | |
68 | + source_branch.live("change", function() { | |
45 | 69 | $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: $(this).val() }); |
46 | 70 | }); |
47 | 71 | |
48 | - $("#merge_request_target_branch").live("change", function() { | |
72 | + target_branch.live("change", function() { | |
49 | 73 | $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: $(this).val() }); |
50 | 74 | }); |
51 | 75 | }); | ... | ... |
config/routes.rb
1 | 1 | Gitlab::Application.routes.draw do |
2 | + # | |
3 | + # Search | |
4 | + # | |
2 | 5 | get 'search' => "search#show" |
3 | 6 | |
4 | 7 | # Optionally, enable Resque here |
5 | 8 | require 'resque/server' |
6 | 9 | mount Resque::Server.new, at: '/info/resque' |
7 | 10 | |
11 | + # | |
12 | + # Help | |
13 | + # | |
8 | 14 | get 'help' => 'help#index' |
9 | 15 | get 'help/permissions' => 'help#permissions' |
10 | 16 | get 'help/workflow' => 'help#workflow' |
11 | 17 | get 'help/web_hooks' => 'help#web_hooks' |
12 | 18 | |
19 | + # | |
20 | + # Admin Area | |
21 | + # | |
13 | 22 | namespace :admin do |
14 | 23 | resources :users do |
15 | 24 | member do |
... | ... | @@ -44,6 +53,7 @@ Gitlab::Application.routes.draw do |
44 | 53 | get "profile", :to => "profile#show" |
45 | 54 | get "profile/design", :to => "profile#design" |
46 | 55 | put "profile/update", :to => "profile#update" |
56 | + resources :keys | |
47 | 57 | |
48 | 58 | # |
49 | 59 | # Dashboard Area |
... | ... | @@ -53,10 +63,12 @@ Gitlab::Application.routes.draw do |
53 | 63 | get "dashboard/merge_requests", :to => "dashboard#merge_requests" |
54 | 64 | |
55 | 65 | resources :projects, :constraints => { :id => /[^\/]+/ }, :only => [:new, :create] |
56 | - resources :keys | |
57 | 66 | |
58 | 67 | devise_for :users, :controllers => { :omniauth_callbacks => :omniauth_callbacks } |
59 | 68 | |
69 | + # | |
70 | + # Project Area | |
71 | + # | |
60 | 72 | resources :projects, :constraints => { :id => /[^\/]+/ }, :except => [:new, :create, :index], :path => "/" do |
61 | 73 | member do |
62 | 74 | get "team" | ... | ... |