summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/repositories_controller.rb2
-rw-r--r--app/controllers/wikis_controller.rb6
-rw-r--r--app/models/gollum_wiki.rb6
-rw-r--r--app/models/network/graph.rb23
-rw-r--r--lib/gitlab/git/commit.rb72
-rw-r--r--lib/gitlab/git/repository.rb36
-rw-r--r--lib/gitlab/git/stats.rb75
-rw-r--r--lib/gitlab/git/tree.rb2
-rw-r--r--lib/gitlab/git_stats.rb73
9 files changed, 119 insertions, 176 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 229cb36949b..6fba2518306 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -17,7 +17,7 @@ class RepositoriesController < ProjectResourceController
end
def stats
- @stats = Gitlab::GitStats.new(@repository.raw, @repository.root_ref)
+ @stats = Gitlab::Git::Stats.new(@repository.raw, @repository.root_ref)
@graph = @stats.graph
end
diff --git a/app/controllers/wikis_controller.rb b/app/controllers/wikis_controller.rb
index 940b1e97340..be9ae4f37a4 100644
--- a/app/controllers/wikis_controller.rb
+++ b/app/controllers/wikis_controller.rb
@@ -49,9 +49,9 @@ class WikisController < ProjectResourceController
end
def history
- unless @wiki = @gollum_wiki.find_page(params[:id])
- redirect_to project_wiki_path(@project, :home), notice: "Page not found"
- end
+ @wiki = @gollum_wiki.find_page(params[:id])
+
+ redirect_to(project_wiki_path(@project, :home), notice: "Page not found") unless @wiki
end
def destroy
diff --git a/app/models/gollum_wiki.rb b/app/models/gollum_wiki.rb
index 16e801c1fdb..8168347926b 100644
--- a/app/models/gollum_wiki.rb
+++ b/app/models/gollum_wiki.rb
@@ -47,12 +47,6 @@ class GollumWiki
wiki.pages.map { |page| WikiPage.new(self, page, true) }
end
- # Returns the last 30 Commit objects across the entire
- # repository.
- def recent_history
- Gitlab::Git::Commit.fresh_commits(wiki.repo, 30)
- end
-
# Finds a page within the repository based on a tile
# or slug.
#
diff --git a/app/models/network/graph.rb b/app/models/network/graph.rb
index 2957adbfc19..2419b719d20 100644
--- a/app/models/network/graph.rb
+++ b/app/models/network/graph.rb
@@ -25,10 +25,9 @@ module Network
def collect_commits
refs_cache = build_refs_cache
- find_commits(count_to_display_commit_in_center)
- .map do |commit|
- # Decorate with app/model/network/commit.rb
- Network::Commit.new(commit, refs_cache[commit.id])
+ find_commits(count_to_display_commit_in_center).map do |commit|
+ # Decorate with app/model/network/commit.rb
+ Network::Commit.new(commit, refs_cache[commit.id])
end
end
@@ -93,15 +92,13 @@ module Network
end
def find_commits(skip = 0)
- Grit::Commit.find_all(
- @repo,
- nil,
- {
- date_order: true,
- max_count: self.class.max_count,
- skip: skip
- }
- )
+ opts = {
+ date_order: true,
+ max_count: self.class.max_count,
+ skip: skip
+ }
+
+ Grit::Commit.find_all(@repo, opts, nil)
end
def commits_sort_by_ref
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb
index f1b9a76b7d6..27b866893f9 100644
--- a/lib/gitlab/git/commit.rb
+++ b/lib/gitlab/git/commit.rb
@@ -12,70 +12,6 @@ module Gitlab
delegate :parents, :diffs, :tree, :stats, :to_patch,
to: :raw_commit
- class << self
- def serialize_keys
- %w(id authored_date committed_date author_name author_email committer_name committer_email message parent_ids)
- end
-
- def find_or_first(repo, commit_id = nil, root_ref)
- commit = if commit_id
- repo.commit(commit_id)
- else
- repo.commits(root_ref).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 initialize(raw_commit, head = nil)
raise "Nil as raw commit passed" unless raw_commit
@@ -88,6 +24,10 @@ module Gitlab
@head = head
end
+ def serialize_keys
+ %w(id authored_date committed_date author_name author_email committer_name committer_email message parent_ids)
+ end
+
def sha
id
end
@@ -143,7 +83,7 @@ module Gitlab
def to_hash
hash = {}
- keys = Commit.serialize_keys
+ keys = serialize_keys
keys.each do |key|
hash[key] = send(key)
@@ -172,7 +112,7 @@ module Gitlab
end
def init_from_hash(hash)
- Commit.serialize_keys.each do |key|
+ serialize_keys.each do |key|
send(:"#{key}=", hash[key])
end
end
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index 30344a3dec5..330448c81b2 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -48,31 +48,41 @@ module Gitlab
end
def commit(commit_id = nil)
- Gitlab::Git::Commit.find_or_first(repo, commit_id, root_ref)
- end
+ commit = if commit_id
+ repo.commit(commit_id)
+ else
+ repo.commits(root_ref).first
+ end
- def fresh_commits(n = 10)
- Gitlab::Git::Commit.fresh_commits(repo, n)
+ Commit.new(commit) if commit
end
def commits_with_refs(n = 20)
- Gitlab::Git::Commit.commits_with_refs(repo, n)
- end
+ commits = repo.branches.map { |ref| Commit.new(ref.commit, ref) }
+
+ commits.sort! do |x, y|
+ y.committed_date <=> x.committed_date
+ end
- def commits_since(date)
- Gitlab::Git::Commit.commits_since(repo, date)
+ commits[0..n]
end
def commits(ref, path = nil, limit = nil, offset = nil)
- Gitlab::Git::Commit.commits(repo, ref, path, limit, offset)
+ 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 last_commit_for(ref, path = nil)
- commits(ref, path, 1).first
+ def commits_between(from, to)
+ repo.commits_between(from, to).map { |c| Commit.new(c) }
end
- def commits_between(from, to)
- Gitlab::Git::Commit.commits_between(repo, from, to)
+ def last_commit_for(ref, path = nil)
+ commits(ref, path, 1).first
end
# Returns an Array of branch names
diff --git a/lib/gitlab/git/stats.rb b/lib/gitlab/git/stats.rb
new file mode 100644
index 00000000000..c925c653342
--- /dev/null
+++ b/lib/gitlab/git/stats.rb
@@ -0,0 +1,75 @@
+module Gitlab
+ module Git
+ class Stats
+ attr_accessor :repo, :ref
+
+ def initialize repo, ref
+ @repo, @ref = repo, ref
+ end
+
+ def authors
+ @authors ||= collect_authors
+ end
+
+ def commits_count
+ @commits_count ||= repo.commit_count(ref)
+ end
+
+ def files_count
+ args = [ref, '-r', '--name-only' ]
+ repo.git.run(nil, 'ls-tree', nil, {}, args).split("\n").count
+ end
+
+ def authors_count
+ authors.size
+ end
+
+ def graph
+ @graph ||= build_graph
+ end
+
+ protected
+
+ def collect_authors
+ shortlog = repo.git.shortlog({e: true, s: true }, ref)
+
+ authors = []
+
+ lines = shortlog.split("\n")
+
+ lines.each do |line|
+ data = line.split("\t")
+ commits = data.first
+ author = Grit::Actor.from_string(data.last)
+
+ authors << OpenStruct.new(
+ name: author.name,
+ email: author.email,
+ commits: commits.to_i
+ )
+ end
+
+ authors.sort_by(&:commits).reverse
+ end
+
+ def build_graph n = 4
+ from, to = (Date.today - n.weeks), Date.today
+ args = ['--all', "--since=#{from.to_s(:date)}", '--format=%ad' ]
+ rev_list = repo.git.run(nil, 'rev-list', nil, {}, args).split("\n")
+
+ commits_dates = rev_list.values_at(* rev_list.each_index.select {|i| i.odd?})
+ commits_dates = commits_dates.map { |date_str| Time.parse(date_str).to_date.to_s(:date) }
+
+ commits_per_day = from.upto(to).map do |day|
+ commits_dates.count(day.to_date.to_s(:date))
+ end
+
+ OpenStruct.new(
+ labels: from.upto(to).map { |day| day.stamp('Aug 23') },
+ commits: commits_per_day,
+ weeks: n
+ )
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/git/tree.rb b/lib/gitlab/git/tree.rb
index 8bcf71ea217..e6b500ba18c 100644
--- a/lib/gitlab/git/tree.rb
+++ b/lib/gitlab/git/tree.rb
@@ -38,7 +38,7 @@ module Gitlab
end
def readme
- @readme ||= entries.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
+ @readme ||= blobs.find { |c| c.name =~ /^readme/i }
end
protected
diff --git a/lib/gitlab/git_stats.rb b/lib/gitlab/git_stats.rb
deleted file mode 100644
index 855bffb5dde..00000000000
--- a/lib/gitlab/git_stats.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module Gitlab
- class GitStats
- attr_accessor :repo, :ref
-
- def initialize repo, ref
- @repo, @ref = repo, ref
- end
-
- def authors
- @authors ||= collect_authors
- end
-
- def commits_count
- @commits_count ||= repo.commit_count(ref)
- end
-
- def files_count
- args = [ref, '-r', '--name-only' ]
- repo.git.run(nil, 'ls-tree', nil, {}, args).split("\n").count
- end
-
- def authors_count
- authors.size
- end
-
- def graph
- @graph ||= build_graph
- end
-
- protected
-
- def collect_authors
- shortlog = repo.git.shortlog({e: true, s: true }, ref)
-
- authors = []
-
- lines = shortlog.split("\n")
-
- lines.each do |line|
- data = line.split("\t")
- commits = data.first
- author = Grit::Actor.from_string(data.last)
-
- authors << OpenStruct.new(
- name: author.name,
- email: author.email,
- commits: commits.to_i
- )
- end
-
- authors.sort_by(&:commits).reverse
- end
-
- def build_graph n = 4
- from, to = (Date.today - n.weeks), Date.today
- args = ['--all', "--since=#{from.to_s(:date)}", '--format=%ad' ]
- rev_list = repo.git.run(nil, 'rev-list', nil, {}, args).split("\n")
-
- commits_dates = rev_list.values_at(* rev_list.each_index.select {|i| i.odd?})
- commits_dates = commits_dates.map { |date_str| Time.parse(date_str).to_date.to_s(:date) }
-
- commits_per_day = from.upto(to).map do |day|
- commits_dates.count(day.to_date.to_s(:date))
- end
-
- OpenStruct.new(
- labels: from.upto(to).map { |day| day.stamp('Aug 23') },
- commits: commits_per_day,
- weeks: n
- )
- end
- end
-end