Commit d730e3ef8b1c9bf73f9eeb492968b455fbec319d
1 parent
dab072c1
Exists in
master
and in
4 other branches
refactoring project, commits controllers
Showing
4 changed files
with
63 additions
and
45 deletions
Show diff stats
app/controllers/commits_controller.rb
| @@ -8,18 +8,18 @@ class CommitsController < ApplicationController | @@ -8,18 +8,18 @@ class CommitsController < ApplicationController | ||
| 8 | before_filter :add_project_abilities | 8 | before_filter :add_project_abilities |
| 9 | before_filter :authorize_read_project! | 9 | before_filter :authorize_read_project! |
| 10 | before_filter :require_non_empty_project | 10 | before_filter :require_non_empty_project |
| 11 | + before_filter :load_refs, :only => :index # load @branch, @tag & @ref | ||
| 11 | 12 | ||
| 12 | - def index | ||
| 13 | - load_refs # load @branch, @tag & @ref | ||
| 14 | 13 | ||
| 14 | + def index | ||
| 15 | @repo = project.repo | 15 | @repo = project.repo |
| 16 | limit, offset = (params[:limit] || 20), (params[:offset] || 0) | 16 | limit, offset = (params[:limit] || 20), (params[:offset] || 0) |
| 17 | 17 | ||
| 18 | - if params[:path] | ||
| 19 | - @commits = @repo.log(@ref, params[:path], :max_count => limit, :skip => offset) | ||
| 20 | - else | ||
| 21 | - @commits = @repo.commits(@ref, limit, offset) | ||
| 22 | - end | 18 | + @commits = if params[:path] |
| 19 | + @repo.log(@ref, params[:path], :max_count => limit, :skip => offset) | ||
| 20 | + else | ||
| 21 | + @repo.commits(@ref, limit, offset) | ||
| 22 | + end | ||
| 23 | 23 | ||
| 24 | respond_to do |format| | 24 | respond_to do |format| |
| 25 | format.html # index.html.erb | 25 | format.html # index.html.erb |
| @@ -29,8 +29,8 @@ class CommitsController < ApplicationController | @@ -29,8 +29,8 @@ class CommitsController < ApplicationController | ||
| 29 | 29 | ||
| 30 | def show | 30 | def show |
| 31 | @commit = project.repo.commits(params[:id]).first | 31 | @commit = project.repo.commits(params[:id]).first |
| 32 | - @notes = project.notes.where(:noteable_id => @commit.id, :noteable_type => "Commit").order("created_at DESC").limit(20) | ||
| 33 | - @note = @project.notes.new(:noteable_id => @commit.id, :noteable_type => "Commit") | 32 | + @notes = project.commit_notes(@commit).fresh.limit(20) |
| 33 | + @note = @project.build_commit_note(@commit) | ||
| 34 | 34 | ||
| 35 | respond_to do |format| | 35 | respond_to do |format| |
| 36 | format.html | 36 | format.html |
app/controllers/projects_controller.rb
| @@ -6,8 +6,8 @@ class ProjectsController < ApplicationController | @@ -6,8 +6,8 @@ class ProjectsController < ApplicationController | ||
| 6 | before_filter :add_project_abilities | 6 | before_filter :add_project_abilities |
| 7 | before_filter :authorize_read_project!, :except => [:index, :new, :create] | 7 | before_filter :authorize_read_project!, :except => [:index, :new, :create] |
| 8 | before_filter :authorize_admin_project!, :only => [:edit, :update, :destroy] | 8 | before_filter :authorize_admin_project!, :only => [:edit, :update, :destroy] |
| 9 | - | ||
| 10 | before_filter :require_non_empty_project, :only => [:blob, :tree] | 9 | before_filter :require_non_empty_project, :only => [:blob, :tree] |
| 10 | + before_filter :load_refs, :only => :tree # load @branch, @tag & @ref | ||
| 11 | 11 | ||
| 12 | def index | 12 | def index |
| 13 | source = current_user.projects | 13 | source = current_user.projects |
| @@ -101,15 +101,13 @@ class ProjectsController < ApplicationController | @@ -101,15 +101,13 @@ class ProjectsController < ApplicationController | ||
| 101 | # | 101 | # |
| 102 | 102 | ||
| 103 | def tree | 103 | def tree |
| 104 | - load_refs # load @branch, @tag & @ref | ||
| 105 | - | ||
| 106 | @repo = project.repo | 104 | @repo = project.repo |
| 107 | 105 | ||
| 108 | - if params[:commit_id] | ||
| 109 | - @commit = @repo.commits(params[:commit_id]).first | ||
| 110 | - else | ||
| 111 | - @commit = @repo.commits(@ref).first | ||
| 112 | - end | 106 | + @commit = if params[:commit_id] |
| 107 | + @repo.commits(params[:commit_id]).first | ||
| 108 | + else | ||
| 109 | + @repo.commits(@ref).first | ||
| 110 | + end | ||
| 113 | 111 | ||
| 114 | @tree = @commit.tree | 112 | @tree = @commit.tree |
| 115 | @tree = @tree / params[:path] if params[:path] | 113 | @tree = @tree / params[:path] if params[:path] |
app/models/project.rb
| @@ -51,6 +51,10 @@ class Project < ActiveRecord::Base | @@ -51,6 +51,10 @@ class Project < ActiveRecord::Base | ||
| 51 | end | 51 | end |
| 52 | 52 | ||
| 53 | delegate :repo, | 53 | delegate :repo, |
| 54 | + :url_to_repo, | ||
| 55 | + :path_to_repo, | ||
| 56 | + :update_gitosis_project, | ||
| 57 | + :destroy_gitosis_project, | ||
| 54 | :tags, | 58 | :tags, |
| 55 | :repo_exists?, | 59 | :repo_exists?, |
| 56 | :commit, | 60 | :commit, |
| @@ -74,16 +78,12 @@ class Project < ActiveRecord::Base | @@ -74,16 +78,12 @@ class Project < ActiveRecord::Base | ||
| 74 | notes.where(:noteable_type => ["", nil]) | 78 | notes.where(:noteable_type => ["", nil]) |
| 75 | end | 79 | end |
| 76 | 80 | ||
| 77 | - def update_gitosis_project | ||
| 78 | - Gitosis.new.configure do |c| | ||
| 79 | - c.update_project(path, gitosis_writers) | ||
| 80 | - end | 81 | + def build_commit_note(commit) |
| 82 | + notes.new(:noteable_id => commit.id, :noteable_type => "Commit") | ||
| 81 | end | 83 | end |
| 82 | 84 | ||
| 83 | - def destroy_gitosis_project | ||
| 84 | - Gitosis.new.configure do |c| | ||
| 85 | - c.destroy_project(self) | ||
| 86 | - end | 85 | + def commit_notes(commit) |
| 86 | + notes.where(:noteable_id => commit.id, :noteable_type => "Commit") | ||
| 87 | end | 87 | end |
| 88 | 88 | ||
| 89 | def add_access(user, *access) | 89 | def add_access(user, *access) |
| @@ -121,14 +121,6 @@ class Project < ActiveRecord::Base | @@ -121,14 +121,6 @@ class Project < ActiveRecord::Base | ||
| 121 | private_flag | 121 | private_flag |
| 122 | end | 122 | end |
| 123 | 123 | ||
| 124 | - def url_to_repo | ||
| 125 | - "#{GITOSIS["git_user"]}@#{GITOSIS["host"]}:#{path}.git" | ||
| 126 | - end | ||
| 127 | - | ||
| 128 | - def path_to_repo | ||
| 129 | - GITOSIS["base_path"] + path + ".git" | ||
| 130 | - end | ||
| 131 | - | ||
| 132 | def last_activity | 124 | def last_activity |
| 133 | updates(1).first | 125 | updates(1).first |
| 134 | rescue | 126 | rescue |
app/models/repository.rb
| @@ -9,24 +9,48 @@ class Repository | @@ -9,24 +9,48 @@ class Repository | ||
| 9 | @project = project | 9 | @project = project |
| 10 | end | 10 | end |
| 11 | 11 | ||
| 12 | + def path | ||
| 13 | + @path ||= project.path | ||
| 14 | + end | ||
| 15 | + | ||
| 16 | + def project_id | ||
| 17 | + project.id | ||
| 18 | + end | ||
| 19 | + | ||
| 12 | def repo | 20 | def repo |
| 13 | @repo ||= Grit::Repo.new(project.path_to_repo) | 21 | @repo ||= Grit::Repo.new(project.path_to_repo) |
| 14 | end | 22 | end |
| 15 | 23 | ||
| 16 | - def tags | ||
| 17 | - repo.tags.map(&:name).sort.reverse | 24 | + def url_to_repo |
| 25 | + "#{GITOSIS["git_user"]}@#{GITOSIS["host"]}:#{path}.git" | ||
| 26 | + end | ||
| 27 | + | ||
| 28 | + def path_to_repo | ||
| 29 | + GITOSIS["base_path"] + path + ".git" | ||
| 30 | + end | ||
| 31 | + | ||
| 32 | + def update_gitosis_project | ||
| 33 | + Gitosis.new.configure do |c| | ||
| 34 | + c.update_project(path, project.gitosis_writers) | ||
| 35 | + end | ||
| 36 | + end | ||
| 37 | + | ||
| 38 | + def destroy_gitosis_project | ||
| 39 | + Gitosis.new.configure do |c| | ||
| 40 | + c.destroy_project(@project) | ||
| 41 | + end | ||
| 18 | end | 42 | end |
| 19 | 43 | ||
| 20 | def repo_exists? | 44 | def repo_exists? |
| 21 | repo rescue false | 45 | repo rescue false |
| 22 | end | 46 | end |
| 23 | 47 | ||
| 24 | - def commit(commit_id = nil) | ||
| 25 | - if commit_id | ||
| 26 | - repo.commits(commit_id).first | ||
| 27 | - else | ||
| 28 | - repo.commits.first | ||
| 29 | - end | 48 | + def tags |
| 49 | + repo.tags.map(&:name).sort.reverse | ||
| 50 | + end | ||
| 51 | + | ||
| 52 | + def heads | ||
| 53 | + @heads ||= repo.heads | ||
| 30 | end | 54 | end |
| 31 | 55 | ||
| 32 | def tree(fcommit, path = nil) | 56 | def tree(fcommit, path = nil) |
| @@ -35,6 +59,14 @@ class Repository | @@ -35,6 +59,14 @@ class Repository | ||
| 35 | path ? (tree / path) : tree | 59 | path ? (tree / path) : tree |
| 36 | end | 60 | end |
| 37 | 61 | ||
| 62 | + def commit(commit_id = nil) | ||
| 63 | + if commit_id | ||
| 64 | + repo.commits(commit_id).first | ||
| 65 | + else | ||
| 66 | + repo.commits.first | ||
| 67 | + end | ||
| 68 | + end | ||
| 69 | + | ||
| 38 | def fresh_commits(n = 10) | 70 | def fresh_commits(n = 10) |
| 39 | commits = heads.map do |h| | 71 | commits = heads.map do |h| |
| 40 | repo.commits(h.name, n) | 72 | repo.commits(h.name, n) |
| @@ -47,10 +79,6 @@ class Repository | @@ -47,10 +79,6 @@ class Repository | ||
| 47 | commits[0...n] | 79 | commits[0...n] |
| 48 | end | 80 | end |
| 49 | 81 | ||
| 50 | - def heads | ||
| 51 | - @heads ||= repo.heads | ||
| 52 | - end | ||
| 53 | - | ||
| 54 | def commits_since(date) | 82 | def commits_since(date) |
| 55 | commits = heads.map do |h| | 83 | commits = heads.map do |h| |
| 56 | repo.log(h.name, nil, :since => date) | 84 | repo.log(h.name, nil, :since => date) |