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) } | ... | ... |