Commit cb59aade4e568e6146a966362385ac41af4dc604
1 parent
74f8bc72
Exists in
master
and in
4 other branches
Cleaning and refactoring
Showing
12 changed files
with
135 additions
and
232 deletions
Show diff stats
app/controllers/admin/projects_controller.rb
... | ... | @@ -31,8 +31,7 @@ class Admin::ProjectsController < ApplicationController |
31 | 31 | UsersProject.bulk_import( |
32 | 32 | @admin_project, |
33 | 33 | params[:user_ids], |
34 | - params[:project_access], | |
35 | - params[:repo_access] | |
34 | + params[:project_access] | |
36 | 35 | ) |
37 | 36 | |
38 | 37 | redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' | ... | ... |
app/controllers/admin/users_controller.rb
... | ... | @@ -23,8 +23,7 @@ class Admin::UsersController < ApplicationController |
23 | 23 | UsersProject.user_bulk_import( |
24 | 24 | @admin_user, |
25 | 25 | params[:project_ids], |
26 | - params[:project_access], | |
27 | - params[:repo_access] | |
26 | + params[:project_access] | |
28 | 27 | ) |
29 | 28 | |
30 | 29 | redirect_to [:admin, @admin_user], notice: 'Teams were successfully updated.' | ... | ... |
app/models/project.rb
... | ... | @@ -54,27 +54,6 @@ class Project < ActiveRecord::Base |
54 | 54 | UsersProject.access_roles |
55 | 55 | end |
56 | 56 | |
57 | - def repository | |
58 | - @repository ||= Repository.new(self) | |
59 | - end | |
60 | - | |
61 | - delegate :repo, | |
62 | - :url_to_repo, | |
63 | - :path_to_repo, | |
64 | - :update_repository, | |
65 | - :destroy_repository, | |
66 | - :tags, | |
67 | - :repo_exists?, | |
68 | - :commit, | |
69 | - :commits, | |
70 | - :commits_with_refs, | |
71 | - :tree, | |
72 | - :heads, | |
73 | - :commits_since, | |
74 | - :fresh_commits, | |
75 | - :commits_between, | |
76 | - :to => :repository, :prefix => nil | |
77 | - | |
78 | 57 | def to_param |
79 | 58 | code |
80 | 59 | end |
... | ... | @@ -213,18 +192,6 @@ class Project < ActiveRecord::Base |
213 | 192 | keys.map(&:identifier) |
214 | 193 | end |
215 | 194 | |
216 | - def readers | |
217 | - @readers ||= users_projects.includes(:user).map(&:user) | |
218 | - end | |
219 | - | |
220 | - def writers | |
221 | - @writers ||= users_projects.includes(:user).map(&:user) | |
222 | - end | |
223 | - | |
224 | - def admins | |
225 | - @admins ||= users_projects.includes(:user).where(:project_access => UsersProject::MASTER).map(&:user) | |
226 | - end | |
227 | - | |
228 | 195 | def allow_read_for?(user) |
229 | 196 | !users_projects.where(:user_id => user.id).empty? |
230 | 197 | end |
... | ... | @@ -269,10 +236,6 @@ class Project < ActiveRecord::Base |
269 | 236 | end |
270 | 237 | end |
271 | 238 | |
272 | - def last_activity_date_cached(expire = 1.hour) | |
273 | - last_activity_date | |
274 | - end | |
275 | - | |
276 | 239 | def check_limit |
277 | 240 | unless owner.can_create_project? |
278 | 241 | errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it") |
... | ... | @@ -293,7 +256,127 @@ class Project < ActiveRecord::Base |
293 | 256 | errors.add(:path, "Invalid repository path") |
294 | 257 | false |
295 | 258 | end |
259 | + | |
260 | + def commit(commit_id = nil) | |
261 | + commit = if commit_id | |
262 | + repo.commits(commit_id).first | |
263 | + else | |
264 | + repo.commits.first | |
265 | + end | |
266 | + Commit.new(commit) if commit | |
267 | + end | |
268 | + | |
269 | + def fresh_commits(n = 10) | |
270 | + commits = heads.map do |h| | |
271 | + repo.commits(h.name, n).map { |c| Commit.new(c, h) } | |
272 | + end.flatten.uniq { |c| c.id } | |
273 | + | |
274 | + commits.sort! do |x, y| | |
275 | + y.committed_date <=> x.committed_date | |
276 | + end | |
277 | + | |
278 | + commits[0...n] | |
279 | + end | |
280 | + | |
281 | + def commits_with_refs(n = 20) | |
282 | + commits = repo.branches.map { |ref| Commit.new(ref.commit, ref) } | |
283 | + | |
284 | + commits.sort! do |x, y| | |
285 | + y.committed_date <=> x.committed_date | |
286 | + end | |
287 | + | |
288 | + commits[0..n] | |
289 | + end | |
290 | + | |
291 | + def commits_since(date) | |
292 | + commits = heads.map do |h| | |
293 | + repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) } | |
294 | + end.flatten.uniq { |c| c.id } | |
295 | + | |
296 | + commits.sort! do |x, y| | |
297 | + y.committed_date <=> x.committed_date | |
298 | + end | |
299 | + | |
300 | + commits | |
301 | + end | |
302 | + | |
303 | + def commits(ref, path = nil, limit = nil, offset = nil) | |
304 | + if path | |
305 | + repo.log(ref, path, :max_count => limit, :skip => offset) | |
306 | + elsif limit && offset | |
307 | + repo.commits(ref, limit, offset) | |
308 | + else | |
309 | + repo.commits(ref) | |
310 | + end.map{ |c| Commit.new(c) } | |
311 | + end | |
312 | + | |
313 | + def commits_between(from, to) | |
314 | + repo.commits_between(from, to).map { |c| Commit.new(c) } | |
315 | + end | |
316 | + | |
317 | + def project_id | |
318 | + self.id | |
319 | + end | |
320 | + | |
321 | + def write_hooks | |
322 | + %w(post-receive).each do |hook| | |
323 | + write_hook(hook, File.read(File.join(Rails.root, 'lib', "#{hook}-hook"))) | |
324 | + end | |
325 | + end | |
326 | + | |
327 | + def write_hook(name, content) | |
328 | + hook_file = File.join(path_to_repo, 'hooks', name) | |
329 | + | |
330 | + File.open(hook_file, 'w') do |f| | |
331 | + f.write(content) | |
332 | + end | |
333 | + | |
334 | + File.chmod(0775, hook_file) | |
335 | + end | |
336 | + | |
337 | + def repo | |
338 | + @repo ||= Grit::Repo.new(path_to_repo) | |
339 | + end | |
340 | + | |
341 | + def url_to_repo | |
342 | + Gitlabhq::GitHost.url_to_repo(path) | |
343 | + end | |
344 | + | |
345 | + def path_to_repo | |
346 | + File.join(GIT_HOST["base_path"], "#{path}.git") | |
347 | + end | |
348 | + | |
349 | + def update_repository | |
350 | + Gitlabhq::GitHost.system.update_project(path, self) | |
351 | + | |
352 | + write_hooks if File.exists?(path_to_repo) | |
353 | + end | |
354 | + | |
355 | + def destroy_repository | |
356 | + Gitlabhq::GitHost.system.destroy_project(self) | |
357 | + end | |
358 | + | |
359 | + def repo_exists? | |
360 | + @repo_exists ||= (repo && !repo.branches.empty?) | |
361 | + rescue | |
362 | + @repo_exists = false | |
363 | + end | |
364 | + | |
365 | + def tags | |
366 | + repo.tags.map(&:name).sort.reverse | |
367 | + end | |
368 | + | |
369 | + def heads | |
370 | + @heads ||= repo.heads | |
371 | + end | |
372 | + | |
373 | + def tree(fcommit, path = nil) | |
374 | + fcommit = commit if fcommit == :head | |
375 | + tree = fcommit.tree | |
376 | + path ? (tree / path) : tree | |
377 | + end | |
296 | 378 | end |
379 | + | |
297 | 380 | # == Schema Information |
298 | 381 | # |
299 | 382 | # Table name: projects | ... | ... |
app/models/protected_branch.rb
... | ... | @@ -7,9 +7,7 @@ class ProtectedBranch < ActiveRecord::Base |
7 | 7 | after_destroy :update_repository |
8 | 8 | |
9 | 9 | def update_repository |
10 | - Gitlabhq::GitHost.system.new.configure do |c| | |
11 | - c.update_project(project.path, project) | |
12 | - end | |
10 | + Gitlabhq::GitHost.system.update_project(project.path, project) | |
13 | 11 | end |
14 | 12 | |
15 | 13 | def commit | ... | ... |
app/models/repository.rb
... | ... | @@ -10,135 +10,4 @@ class Repository |
10 | 10 | def self.access_options |
11 | 11 | {} |
12 | 12 | end |
13 | - | |
14 | - def initialize(project) | |
15 | - @project = project | |
16 | - end | |
17 | - | |
18 | - def path | |
19 | - @path ||= project.path | |
20 | - end | |
21 | - | |
22 | - def project_id | |
23 | - project.id | |
24 | - end | |
25 | - | |
26 | - def write_hooks | |
27 | - %w(post-receive).each do |hook| | |
28 | - write_hook(hook, File.read(File.join(Rails.root, 'lib', "#{hook}-hook"))) | |
29 | - end | |
30 | - end | |
31 | - | |
32 | - def write_hook(name, content) | |
33 | - hook_file = File.join(project.path_to_repo, 'hooks', name) | |
34 | - | |
35 | - File.open(hook_file, 'w') do |f| | |
36 | - f.write(content) | |
37 | - end | |
38 | - | |
39 | - File.chmod(0775, hook_file) | |
40 | - end | |
41 | - | |
42 | - def repo | |
43 | - @repo ||= Grit::Repo.new(project.path_to_repo) | |
44 | - end | |
45 | - | |
46 | - def url_to_repo | |
47 | - Gitlabhq::GitHost.url_to_repo(path) | |
48 | - end | |
49 | - | |
50 | - def path_to_repo | |
51 | - File.join(GIT_HOST["base_path"], "#{path}.git") | |
52 | - end | |
53 | - | |
54 | - def update_repository | |
55 | - Gitlabhq::GitHost.system.new.configure do |c| | |
56 | - c.update_project(path, project) | |
57 | - end | |
58 | - | |
59 | - write_hooks if File.exists?(project.path_to_repo) | |
60 | - end | |
61 | - | |
62 | - def destroy_repository | |
63 | - Gitlabhq::GitHost.system.new.configure do |c| | |
64 | - c.destroy_project(@project) | |
65 | - end | |
66 | - end | |
67 | - | |
68 | - def repo_exists? | |
69 | - @repo_exists ||= (repo && !repo.branches.empty?) | |
70 | - rescue | |
71 | - @repo_exists = false | |
72 | - end | |
73 | - | |
74 | - def tags | |
75 | - repo.tags.map(&:name).sort.reverse | |
76 | - end | |
77 | - | |
78 | - def heads | |
79 | - @heads ||= repo.heads | |
80 | - end | |
81 | - | |
82 | - def tree(fcommit, path = nil) | |
83 | - fcommit = commit if fcommit == :head | |
84 | - tree = fcommit.tree | |
85 | - path ? (tree / path) : tree | |
86 | - end | |
87 | - | |
88 | - def commit(commit_id = nil) | |
89 | - commit = if commit_id | |
90 | - repo.commits(commit_id).first | |
91 | - else | |
92 | - repo.commits.first | |
93 | - end | |
94 | - Commit.new(commit) if commit | |
95 | - end | |
96 | - | |
97 | - def fresh_commits(n = 10) | |
98 | - commits = heads.map do |h| | |
99 | - repo.commits(h.name, n).map { |c| Commit.new(c, h) } | |
100 | - end.flatten.uniq { |c| c.id } | |
101 | - | |
102 | - commits.sort! do |x, y| | |
103 | - y.committed_date <=> x.committed_date | |
104 | - end | |
105 | - | |
106 | - commits[0...n] | |
107 | - end | |
108 | - | |
109 | - def commits_with_refs(n = 20) | |
110 | - commits = repo.branches.map { |ref| Commit.new(ref.commit, ref) } | |
111 | - | |
112 | - commits.sort! do |x, y| | |
113 | - y.committed_date <=> x.committed_date | |
114 | - end | |
115 | - | |
116 | - commits[0..n] | |
117 | - end | |
118 | - | |
119 | - def commits_since(date) | |
120 | - commits = heads.map do |h| | |
121 | - repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) } | |
122 | - end.flatten.uniq { |c| c.id } | |
123 | - | |
124 | - commits.sort! do |x, y| | |
125 | - y.committed_date <=> x.committed_date | |
126 | - end | |
127 | - | |
128 | - commits | |
129 | - end | |
130 | - | |
131 | - def commits(ref, path = nil, limit = nil, offset = nil) | |
132 | - if path | |
133 | - repo.log(ref, path, :max_count => limit, :skip => offset) | |
134 | - elsif limit && offset | |
135 | - repo.commits(ref, limit, offset) | |
136 | - else | |
137 | - repo.commits(ref) | |
138 | - end.map{ |c| Commit.new(c) } | |
139 | - end | |
140 | - | |
141 | - def commits_between(from, to) | |
142 | - repo.commits_between(from, to).map { |c| Commit.new(c) } | |
143 | - end | |
144 | 13 | end | ... | ... |
app/models/users_project.rb
... | ... | @@ -18,7 +18,7 @@ class UsersProject < ActiveRecord::Base |
18 | 18 | |
19 | 19 | delegate :name, :email, :to => :user, :prefix => true |
20 | 20 | |
21 | - def self.bulk_import(project, user_ids, project_access, repo_access) | |
21 | + def self.bulk_import(project, user_ids, project_access) | |
22 | 22 | UsersProject.transaction do |
23 | 23 | user_ids.each do |user_id| |
24 | 24 | users_project = UsersProject.new( |
... | ... | @@ -31,7 +31,7 @@ class UsersProject < ActiveRecord::Base |
31 | 31 | end |
32 | 32 | end |
33 | 33 | |
34 | - def self.user_bulk_import(user, project_ids, project_access, repo_access) | |
34 | + def self.user_bulk_import(user, project_ids, project_access) | |
35 | 35 | UsersProject.transaction do |
36 | 36 | project_ids.each do |project_id| |
37 | 37 | users_project = UsersProject.new( | ... | ... |
app/views/dashboard/_projects_feed.html.haml
app/views/projects/_feed.html.haml
... | ... | @@ -1,23 +0,0 @@ |
1 | -- @activities.each do |update| | |
2 | - .wll | |
3 | - = link_to dashboard_feed_path(@project, update) do | |
4 | - - if update.kind_of? Note | |
5 | - %p | |
6 | - %strong | |
7 | - - if update.target | |
8 | - = update.target.class.name.titleize | |
9 | - = truncate update.target.id.to_s, :length => 10 | |
10 | - commented | |
11 | - - else | |
12 | - Project wall | |
13 | - – | |
14 | - = image_tag gravatar_icon(update.author_email), :class => "", :width => 16 | |
15 | - = truncate dashboard_feed_title(update), :length => 50 | |
16 | - - else | |
17 | - %p | |
18 | - %strong | |
19 | - = update.class.name.titleize | |
20 | - = truncate update.id.to_s | |
21 | - – | |
22 | - = image_tag gravatar_icon(update.author_email), :class => "", :width => 16 | |
23 | - = truncate dashboard_feed_title(update), :length => 50 |
app/views/projects/_list.html.haml
... | ... | @@ -1,26 +0,0 @@ |
1 | -%table.round-borders#projects-list | |
2 | - %tr | |
3 | - %th Name | |
4 | - %th Path | |
5 | - %th Code | |
6 | - %th Web | |
7 | - %th Git | |
8 | - %th Admin | |
9 | - %th Actions | |
10 | - | |
11 | - - @projects.each do |project| | |
12 | - %tr{ :class => "project", :url => project_path(project) } | |
13 | - %td | |
14 | - = project.name | |
15 | - .small-tags= tag_list project | |
16 | - | |
17 | - %td= truncate project.url_to_repo | |
18 | - %td= project.code | |
19 | - %td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled | |
20 | - %td= check_box_tag "commit", 1, project.writers.include?(current_user), :disabled => :disabled | |
21 | - %td= check_box_tag "admin", 1, project.admins.include?(current_user), :disabled => :disabled | |
22 | - %td | |
23 | - -if can? current_user, :admin_project, project | |
24 | - = link_to 'Edit', edit_project_path(project), :class => "lbutton positive" | |
25 | -%br | |
26 | - |
lib/gitlabhq/gitolite.rb
... | ... | @@ -6,6 +6,14 @@ module Gitlabhq |
6 | 6 | class Gitolite |
7 | 7 | class AccessDenied < StandardError; end |
8 | 8 | |
9 | + def self.update_project(path, project) | |
10 | + self.new.configure { |git| git.update_project(path, project) } | |
11 | + end | |
12 | + | |
13 | + def self.destroy_project(project) | |
14 | + self.new.configure { |git| git.destroy_project(project) } | |
15 | + end | |
16 | + | |
9 | 17 | def pull |
10 | 18 | # create tmp dir |
11 | 19 | @local_dir = File.join(Dir.tmpdir,"gitlabhq-gitolite-#{Time.now.to_i}") | ... | ... |
lib/tasks/bulk_import.rake
... | ... | @@ -90,8 +90,7 @@ def create_repo_project(project_name, user_email) |
90 | 90 | |
91 | 91 | # Add user as admin for project |
92 | 92 | project.users_projects.create!( |
93 | - :repo_access => Repository::REPO_RW, | |
94 | - :project_access => Project::PROJECT_RWA, | |
93 | + :project_access => UsersProject::MASTER, | |
95 | 94 | :user => user |
96 | 95 | ) |
97 | 96 | ... | ... |
spec/models/project_spec.rb
... | ... | @@ -22,10 +22,7 @@ describe Project do |
22 | 22 | end |
23 | 23 | |
24 | 24 | describe "Respond to" do |
25 | - it { should respond_to(:readers) } | |
26 | - it { should respond_to(:writers) } | |
27 | 25 | it { should respond_to(:repository_writers) } |
28 | - it { should respond_to(:admins) } | |
29 | 26 | it { should respond_to(:add_access) } |
30 | 27 | it { should respond_to(:reset_access) } |
31 | 28 | it { should respond_to(:update_repository) } | ... | ... |