fix #140, commit lil refactor
This commit is contained in:
parent
29e11d1461
commit
1a9531c9a4
5 changed files with 59 additions and 38 deletions
|
@ -36,6 +36,8 @@ class Project < ActiveRecord::Base
|
|||
|
||||
validate :check_limit
|
||||
|
||||
validate :repo_name
|
||||
|
||||
after_destroy :destroy_gitosis_project
|
||||
after_save :update_gitosis_project
|
||||
|
||||
|
@ -168,6 +170,12 @@ class Project < ActiveRecord::Base
|
|||
errors[:base] << ("Cant check your ability to create project")
|
||||
end
|
||||
|
||||
def repo_name
|
||||
if path == "gitosis-admin"
|
||||
errors.add(:path, "Project path like 'gitosis-admin' is not allowed")
|
||||
end
|
||||
end
|
||||
|
||||
def valid_repo?
|
||||
repo
|
||||
rescue
|
||||
|
|
|
@ -1,27 +1,5 @@
|
|||
.file_stats
|
||||
- @commit.diffs.each do |diff|
|
||||
- if diff.deleted_file
|
||||
%span.removed_file
|
||||
%a{:href => "##{diff.a_path}"}
|
||||
= diff.a_path
|
||||
= image_tag "blueprint_delete.png"
|
||||
- elsif diff.renamed_file
|
||||
%span.moved_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.a_path
|
||||
= "->"
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_notice.png"
|
||||
- elsif diff.new_file
|
||||
%span.new_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_add.png"
|
||||
- else
|
||||
%span.edit_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_info.png"
|
||||
.file_stats= render "commits/diff_head"
|
||||
|
||||
- @commit.diffs.each do |diff|
|
||||
- next if diff.diff.empty?
|
||||
- file = (@commit.tree / diff.b_path)
|
||||
|
@ -36,20 +14,7 @@
|
|||
%br/
|
||||
.diff_file_content
|
||||
- if file.text?
|
||||
- lines_arr = diff.diff.lines.to_a
|
||||
- line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0
|
||||
- line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0
|
||||
- lines = lines_arr[3..-1].join
|
||||
- lines.each_line do |line|
|
||||
= diff_line(line, line_new, line_old)
|
||||
- if line[0] == "+"
|
||||
- line_new += 1
|
||||
- elsif
|
||||
- line[0] == "-"
|
||||
- line_old += 1
|
||||
- else
|
||||
- line_new += 1
|
||||
- line_old += 1
|
||||
= render :partial => "commits/text_file", :locals => { :diff => diff }
|
||||
- elsif file.image?
|
||||
.diff_file_content_image
|
||||
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
|
||||
|
|
24
app/views/commits/_diff_head.html.haml
Normal file
24
app/views/commits/_diff_head.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
|||
- @commit.diffs.each do |diff|
|
||||
- if diff.deleted_file
|
||||
%span.removed_file
|
||||
%a{:href => "##{diff.a_path}"}
|
||||
= diff.a_path
|
||||
= image_tag "blueprint_delete.png"
|
||||
- elsif diff.renamed_file
|
||||
%span.moved_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.a_path
|
||||
= "->"
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_notice.png"
|
||||
- elsif diff.new_file
|
||||
%span.new_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_add.png"
|
||||
- else
|
||||
%span.edit_file
|
||||
%a{:href => "##{diff.b_path}"}
|
||||
= diff.b_path
|
||||
= image_tag "blueprint_info.png"
|
||||
|
15
app/views/commits/_text_file.html.haml
Normal file
15
app/views/commits/_text_file.html.haml
Normal file
|
@ -0,0 +1,15 @@
|
|||
- lines_arr = diff.diff.lines.to_a
|
||||
- line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0
|
||||
- line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0
|
||||
- lines = lines_arr[3..-1].join
|
||||
- lines.each_line do |line|
|
||||
= diff_line(line, line_new, line_old)
|
||||
- if line[0] == "+"
|
||||
- line_new += 1
|
||||
- elsif
|
||||
- line[0] == "-"
|
||||
- line_old += 1
|
||||
- else
|
||||
- line_new += 1
|
||||
- line_old += 1
|
||||
|
|
@ -4,11 +4,15 @@ describe Project do
|
|||
describe "Associations" do
|
||||
it { should have_many(:users) }
|
||||
it { should have_many(:users_projects) }
|
||||
it { should have_many(:issues) }
|
||||
it { should have_many(:notes) }
|
||||
it { should have_many(:snippets) }
|
||||
end
|
||||
|
||||
describe "Validation" do
|
||||
it { should validate_presence_of(:name) }
|
||||
it { should validate_presence_of(:path) }
|
||||
it { should validate_presence_of(:code) }
|
||||
end
|
||||
|
||||
describe "Respond to" do
|
||||
|
@ -31,6 +35,11 @@ describe Project do
|
|||
it { should respond_to(:commit) }
|
||||
end
|
||||
|
||||
it "should not allow 'gitosis-admin' as repo name" do
|
||||
should allow_value("blah").for(:path)
|
||||
should_not allow_value("gitosis-admin").for(:path)
|
||||
end
|
||||
|
||||
it "should return valid url to repo" do
|
||||
project = Project.new(:path => "somewhere")
|
||||
project.url_to_repo.should == "git@localhost:somewhere.git"
|
||||
|
|
Loading…
Reference in a new issue