Improve commits compare. Added tags to autocomplete. Dont look for commits if from & to are empty
This commit is contained in:
parent
49fe8fed11
commit
4cc169d3ca
4 changed files with 33 additions and 16 deletions
|
@ -52,6 +52,7 @@ class CommitsController < ApplicationController
|
|||
@commits = result[:commits]
|
||||
@commit = result[:commit]
|
||||
@diffs = result[:diffs]
|
||||
@refs_are_same = result[:same]
|
||||
@line_notes = []
|
||||
|
||||
@commits = CommitDecorator.decorate(@commits)
|
||||
|
|
|
@ -82,20 +82,24 @@ class Commit
|
|||
end
|
||||
|
||||
def compare(project, from, to)
|
||||
first = project.commit(to.try(:strip))
|
||||
last = project.commit(from.try(:strip))
|
||||
|
||||
result = {
|
||||
commits: [],
|
||||
diffs: [],
|
||||
commit: nil
|
||||
commit: nil,
|
||||
same: false
|
||||
}
|
||||
|
||||
return result unless from && to
|
||||
|
||||
first = project.commit(to.try(:strip))
|
||||
last = project.commit(from.try(:strip))
|
||||
|
||||
if first && last
|
||||
commits = [first, last].sort_by(&:created_at)
|
||||
younger = commits.first
|
||||
older = commits.last
|
||||
|
||||
result[:same] = (younger.id == older.id)
|
||||
result[:commits] = project.repo.commits_between(younger.id, older.id).map {|c| Commit.new(c)}
|
||||
result[:diffs] = project.repo.diff(younger.id, older.id) rescue []
|
||||
result[:commit] = Commit.new(older)
|
||||
|
|
|
@ -79,6 +79,14 @@ module Repository
|
|||
@heads ||= repo.heads
|
||||
end
|
||||
|
||||
def branches_names
|
||||
heads.map(&:name)
|
||||
end
|
||||
|
||||
def ref_names
|
||||
[branches_names + tags].flatten
|
||||
end
|
||||
|
||||
def tree(fcommit, path = nil)
|
||||
fcommit = commit if fcommit == :head
|
||||
tree = fcommit.tree
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
= render "head"
|
||||
|
||||
%h3
|
||||
%h3.page_title
|
||||
Compare View
|
||||
%hr
|
||||
|
||||
%div
|
||||
%p
|
||||
%p.slead
|
||||
Fill input field with commit id like
|
||||
%code '4eedf23'
|
||||
%code.label_branch 4eedf23
|
||||
or branch/tag name like
|
||||
%code master
|
||||
& press compare button for commits list, code diff.
|
||||
%code.label_branch master
|
||||
and press compare button for commits list, code diff.
|
||||
|
||||
%br
|
||||
|
||||
|
@ -19,22 +19,24 @@
|
|||
= text_field_tag :from, params[:from], placeholder: "master", class: "xlarge"
|
||||
= "..."
|
||||
= text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
|
||||
- if @refs_are_same
|
||||
.alert
|
||||
%span Refs are the same
|
||||
.actions
|
||||
= submit_tag "Compare", class: "btn primary"
|
||||
= submit_tag "Compare", class: "btn primary wide commits-compare-btn"
|
||||
|
||||
|
||||
- unless @commits.empty?
|
||||
- if @commits.present?
|
||||
%div.ui-box
|
||||
%h5.small Commits (#{@commits.count})
|
||||
%ul.unstyled= render @commits
|
||||
|
||||
- unless @diffs.empty?
|
||||
%h4 Diff
|
||||
= render "commits/diffs", diffs: @diffs
|
||||
- unless @diffs.empty?
|
||||
%h4 Diff
|
||||
= render "commits/diffs", diffs: @diffs
|
||||
|
||||
:javascript
|
||||
$(function() {
|
||||
var availableTags = #{@project.heads.map(&:name).to_json};
|
||||
var availableTags = #{@project.ref_names.to_json};
|
||||
|
||||
$("#from").autocomplete({
|
||||
source: availableTags,
|
||||
|
@ -45,5 +47,7 @@
|
|||
source: availableTags,
|
||||
minLength: 1
|
||||
});
|
||||
|
||||
disableButtonIfEmptyField('#to', '.commits-compare-btn');
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue