diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-04-01 16:03:11 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-04-01 16:03:11 +0300 |
commit | bb06e905efb1722502d71059c21add8cfde851aa (patch) | |
tree | ac6646f7fc13a4d6539f51a8d24f0cdb78208817 /lib | |
parent | 51c167554cf492be98cecad182a6870cd6febb82 (diff) | |
download | gitlab-ce-bb06e905efb1722502d71059c21add8cfde851aa.tar.gz |
added Gitlab::Git::Compare for git compare feature
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/compare.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/gitlab/git/compare.rb b/lib/gitlab/git/compare.rb new file mode 100644 index 00000000000..1fa4306200f --- /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 + |