diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 229cb36949b82f28d484376fa3c45e9ce2fd623b..6fba251830652c30f7b674083ea0ed80c251931f 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 940b1e9734051b433c597432170d145a56688091..be9ae4f37a4a6cc6f865115d326ac932168607ec 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 16e801c1fdb2856c2b286a9568ab5d47fec374c5..8168347926bd41758c0ca3ff9156ba6e13d0f7ec 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 2957adbfc1947dc660f698a51ac23476b4257bf0..2419b719d209486744723622bee24a47eee92bfe 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 f1b9a76b7d6285c3f592e2796ca7d0802e3d1ced..27b866893f93f134d6e0c05fc552ee9facac3c1c 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 30344a3dec5d3b4a048254d5c9d1ce102a376a9e..330448c81b2a9a64f8f7ef1ad9c6029cd7e617b9 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 0000000000000000000000000000000000000000..c925c653342e2d5be106e6db65ac6e03d372d5c5
--- /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 8bcf71ea217cdf9b68bfdda942000f8179d1ad0e..e6b500ba18cf2b8683c2412faed01106e00da5d3 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 855bffb5ddefaad31d44c0ea9a193e0a5e35bcf1..0000000000000000000000000000000000000000
--- 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