diff --git a/app/models/commit.rb b/app/models/commit.rb index a59e8803..8e0681f0 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -20,6 +20,66 @@ class Commit :id, :to => :commit + + class << self + def find_or_first(repo, commit_id = nil) + commit = if commit_id + repo.commit(commit_id) + else + repo.commits.first + end + Commit.new(commit) if commit + end + + def fresh_commits(repo, n = 10) + commits = repo.heads.map do |h| + repo.commits(h.name, n).map { |c| Commit.new(c, h) } + end.flatten.uniq { |c| c.id } + + commits.sort! do |x, y| + y.committed_date <=> x.committed_date + end + + commits[0...n] + end + + def commits_with_refs(repo, n = 20) + commits = repo.branches.map { |ref| Commit.new(ref.commit, ref) } + + commits.sort! do |x, y| + y.committed_date <=> x.committed_date + end + + commits[0..n] + end + + def commits_since(repo, date) + commits = repo.heads.map do |h| + repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) } + end.flatten.uniq { |c| c.id } + + commits.sort! do |x, y| + y.committed_date <=> x.committed_date + end + + commits + end + + def commits(repo, ref, path = nil, limit = nil, offset = nil) + if path + repo.log(ref, path, :max_count => limit, :skip => offset) + elsif limit && offset + repo.commits(ref, limit, offset) + else + repo.commits(ref) + end.map{ |c| Commit.new(c) } + end + + def commits_between(repo, from, to) + repo.commits_between(from, to).map { |c| Commit.new(c) } + end + end + def persisted? false end diff --git a/app/models/project.rb b/app/models/project.rb index b7445db0..2ba0c907 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -69,7 +69,7 @@ class Project < ActiveRecord::Base :project => self, :action => Event::Pushed, :data => data, - :author_id => Key.find_by_identifier(author_key_id).user.id + :author_id => data[:user_id] ) end @@ -259,60 +259,27 @@ class Project < ActiveRecord::Base end def commit(commit_id = nil) - commit = if commit_id - repo.commit(commit_id) - else - repo.commits.first - end - Commit.new(commit) if commit + Commit.find_or_first(repo, commit_id) end def fresh_commits(n = 10) - commits = heads.map do |h| - repo.commits(h.name, n).map { |c| Commit.new(c, h) } - end.flatten.uniq { |c| c.id } - - commits.sort! do |x, y| - y.committed_date <=> x.committed_date - end - - commits[0...n] + Commit.fresh_commits(repo, n) end def commits_with_refs(n = 20) - commits = repo.branches.map { |ref| Commit.new(ref.commit, ref) } - - commits.sort! do |x, y| - y.committed_date <=> x.committed_date - end - - commits[0..n] + Commit.commits_with_refs(repo, n) end def commits_since(date) - commits = heads.map do |h| - repo.log(h.name, nil, :since => date).each { |c| Commit.new(c, h) } - end.flatten.uniq { |c| c.id } - - commits.sort! do |x, y| - y.committed_date <=> x.committed_date - end - - commits + Commit.commits_since(repo, date) end def commits(ref, path = nil, limit = nil, offset = nil) - if path - repo.log(ref, path, :max_count => limit, :skip => offset) - elsif limit && offset - repo.commits(ref, limit, offset) - else - repo.commits(ref) - end.map{ |c| Commit.new(c) } + Commit.commits(repo, ref, path, limit, offset) end def commits_between(from, to) - repo.commits_between(from, to).map { |c| Commit.new(c) } + Commit.commits_between(repo, from, to) end def project_id diff --git a/app/models/repository.rb b/app/models/repository.rb deleted file mode 100644 index f18b8302..00000000 --- a/app/models/repository.rb +++ /dev/null @@ -1,13 +0,0 @@ -require File.join(Rails.root, "lib", "gitlabhq", "git_host") - -class Repository - attr_accessor :project - - def self.default_ref - "master" - end - - def self.access_options - {} - end -end diff --git a/db/fixtures/development/004_teams.rb b/db/fixtures/development/004_teams.rb index a973cac8..3ef55b92 100644 --- a/db/fixtures/development/004_teams.rb +++ b/db/fixtures/development/004_teams.rb @@ -1,21 +1,21 @@ UsersProject.seed(:id, [ - { :id => 1, :project_id => 1, :user_id => 1, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_RW }, - { :id => 2, :project_id => 1, :user_id => 2, :project_access => Project::PROJECT_RW, :repo_access => Repository::REPO_N }, - { :id => 3, :project_id => 1, :user_id => 3, :project_access => Project::PROJECT_RW, :repo_access => Repository::REPO_N }, - { :id => 4, :project_id => 1, :user_id => 4, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, - { :id => 5, :project_id => 1, :user_id => 5, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, + { :id => 1, :project_id => 1, :user_id => 1, :project_access => UsersProject::MASTER }, + { :id => 2, :project_id => 1, :user_id => 2, :project_access => UsersProject::REPORTERW}, + { :id => 3, :project_id => 1, :user_id => 3, :project_access => UsersProject::REPORTERW}, + { :id => 4, :project_id => 1, :user_id => 4, :project_access => UsersProject::REPORTER}, + { :id => 5, :project_id => 1, :user_id => 5, :project_access => UsersProject::REPORTER}, - { :id => 6, :project_id => 2, :user_id => 1, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_RW }, - { :id => 7, :project_id => 2, :user_id => 2, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, - { :id => 8, :project_id => 2, :user_id => 3, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, - { :id => 9, :project_id => 2, :user_id => 4, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_N }, - { :id => 11, :project_id => 2, :user_id => 5, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_N }, + { :id => 6, :project_id => 2, :user_id => 1, :project_access => UsersProject::MASTER }, + { :id => 7, :project_id => 2, :user_id => 2, :project_access => UsersProject::REPORTER}, + { :id => 8, :project_id => 2, :user_id => 3, :project_access => UsersProject::REPORTER}, + { :id => 9, :project_id => 2, :user_id => 4, :project_access => UsersProject::MASTER}, + { :id => 11, :project_id => 2, :user_id => 5, :project_access => UsersProject::MASTER}, - { :id => 12, :project_id => 3, :user_id => 1, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_RW }, - { :id => 13, :project_id => 3, :user_id => 2, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, - { :id => 14, :project_id => 3, :user_id => 3, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_N }, - { :id => 15, :project_id => 3, :user_id => 4, :project_access => Project::PROJECT_R, :repo_access => Repository::REPO_N }, - { :id => 16, :project_id => 3, :user_id => 5, :project_access => Project::PROJECT_RWA, :repo_access => Repository::REPO_N } + { :id => 12, :project_id => 3, :user_id => 1, :project_access => UsersProject::MASTER }, + { :id => 13, :project_id => 3, :user_id => 2, :project_access => UsersProject::REPORTER}, + { :id => 14, :project_id => 3, :user_id => 3, :project_access => UsersProject::MASTER}, + { :id => 15, :project_id => 3, :user_id => 4, :project_access => UsersProject::REPORTER}, + { :id => 16, :project_id => 3, :user_id => 5, :project_access => UsersProject::MASTER} ])