added Gitlab::Git::Compare for git compare feature
This commit is contained in:
parent
51c167554c
commit
bb06e905ef
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue