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