From 26323046fda07b2353ee427afcd0253cea935047 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Sun, 31 Mar 2013 19:00:45 +0300
Subject: [PATCH] Decorate Gitlab::Git::Commit with Commit

---
 app/contexts/commit_load_context.rb         | 1 +
 app/controllers/commits_controller.rb       | 1 +
 app/models/commit.rb                        | 8 ++++++++
 lib/gitlab/git/commit.rb                    | 4 ++--
 spec/helpers/gitlab_markdown_helper_spec.rb | 2 +-
 5 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/app/contexts/commit_load_context.rb b/app/contexts/commit_load_context.rb
index 1f23f633af3..c8d77d9b5f3 100644
--- a/app/contexts/commit_load_context.rb
+++ b/app/contexts/commit_load_context.rb
@@ -12,6 +12,7 @@ class CommitLoadContext < BaseContext
     commit = project.repository.commit(params[:id])
 
     if commit
+      commit = Commit.new(commit)
       commit = CommitDecorator.decorate(commit)
       line_notes = project.notes.for_commit_id(commit.id).inline
 
diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb
index 9dc0d96883e..fded5f0ab86 100644
--- a/app/controllers/commits_controller.rb
+++ b/app/controllers/commits_controller.rb
@@ -13,6 +13,7 @@ class CommitsController < ProjectResourceController
     @limit, @offset = (params[:limit] || 40), (params[:offset] || 0)
 
     @commits = @repo.commits(@ref, @path, @limit, @offset)
+    @commits = Commit.decorate(@commits)
     @commits = CommitDecorator.decorate_collection(@commits)
 
     respond_to do |format|
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 0164ae663be..ea5b451b28f 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -10,12 +10,20 @@ class Commit
 
   attr_accessor :raw
 
+  def self.decorate(commits)
+    commits.map { |c| Commit.new(c) }
+  end
+
   def initialize(raw_commit)
     raise "Nil as raw commit passed" unless raw_commit
 
     @raw = raw_commit
   end
 
+  def id
+    @raw.id
+  end
+
   def method_missing(m, *args, &block)
     @raw.send(m, *args, &block)
   end
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb
index 86e0dfbbf25..023672f986b 100644
--- a/lib/gitlab/git/commit.rb
+++ b/lib/gitlab/git/commit.rb
@@ -7,8 +7,8 @@ module Gitlab
       attr_accessor :raw_commit, :head, :refs
 
       delegate  :message, :authored_date, :committed_date, :parents, :sha,
-        :date, :committer, :author, :diffs, :tree, :id, :stats,
-        :to_patch, to: :raw_commit
+        :date, :committer, :author, :diffs, :tree, :id, :stats, :to_patch,
+        to: :raw_commit
 
       class << self
         def find_or_first(repo, commit_id = nil, root_ref)
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index b9025026c1b..3abeaeef821 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -7,7 +7,7 @@ describe GitlabMarkdownHelper do
   let!(:project) { create(:project) }
 
   let(:user)          { create(:user, username: 'gfm') }
-  let(:commit)        { CommitDecorator.decorate(project.repository.commit) }
+  let(:commit)        { CommitDecorator.decorate(Commit.new(project.repository.commit)) }
   let(:issue)         { create(:issue, project: project) }
   let(:merge_request) { create(:merge_request, project: project) }
   let(:snippet)       { create(:snippet, project: project) }
-- 
GitLab