From bb06e905efb1722502d71059c21add8cfde851aa Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 1 Apr 2013 16:03:11 +0300 Subject: [PATCH] added Gitlab::Git::Compare for git compare feature --- lib/gitlab/git/compare.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/gitlab/git/compare.rb diff --git a/lib/gitlab/git/compare.rb b/lib/gitlab/git/compare.rb new file mode 100644 index 00000000..1fa43062 --- /dev/null +++ b/lib/gitlab/git/compare.rb @@ -0,0 +1,37 @@ +module Gitlab + module Git + class Compare + attr_accessor :commits, :commit, :diffs, :same + + def initialize(repository, from, to) + @commits, @diffs = [], [] + @commit = nil + @same = false + + return unless from && to + + first = repository.commit(to.try(:strip)) + last = repository.commit(from.try(:strip)) + + return unless first && last + + if first.id == last.id + @same = true + return + end + + @commit = Commit.new(first) + + @commits = repository.commits_between(last.id, first.id) + @commits = @commits.map { |c| Commit.new(c) } + + @diffs = if @commits.size > 100 + [] + else + repository.repo.diff(last.id, first.id) rescue [] + end + end + end + end +end +