From a0bca5b71d11454b51f890f4dd36bbf948f1edf5 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Sun, 31 Mar 2013 23:45:38 +0300
Subject: [PATCH] Add Repository model to proxy request to
 Gitlab::Git::Repositoty and decorate commits with Commit model

---
 app/models/repository.rb | 41 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 app/models/repository.rb

diff --git a/app/models/repository.rb b/app/models/repository.rb
new file mode 100644
index 00000000000..048795b22ab
--- /dev/null
+++ b/app/models/repository.rb
@@ -0,0 +1,41 @@
+class Repository
+  attr_accessor :raw_repository
+
+  def initialize(path_with_namespace, default_branch)
+    @raw_repository = Gitlab::Git::Repository.new(path_with_namespace, default_branch)
+  end
+
+  def commit(id = nil)
+    commit = raw_repository.commit(id)
+    commit = Commit.new(commit) if commit
+    commit
+  end
+
+  def commits(ref, path = nil, limit = nil, offset = nil)
+    commits = raw_repository.commits(ref, path, limit, offset)
+    commits = decorate_commits(commits) if commits.present?
+    commits
+  end
+
+  def commits_between(target, source)
+    commits = raw_repository.commits_between(target, source)
+    commits = decorate_commits(commits) if commits.present?
+    commits
+  end
+
+  def method_missing(m, *args, &block)
+    @raw_repository.send(m, *args, &block)
+  end
+
+  def respond_to?(method)
+    return true if @raw_repository.respond_to?(method)
+
+    super
+  end
+
+  protected
+
+  def decorate_commits(commits)
+    commits.map { |c| Commit.new(c) }
+  end
+end
-- 
GitLab