fix #140, commit lil refactor
This commit is contained in:
parent
32f4dc7cf9
commit
e7570250af
5 changed files with 59 additions and 38 deletions
|
@ -36,6 +36,8 @@ class Project < ActiveRecord::Base
|
||||||
|
|
||||||
validate :check_limit
|
validate :check_limit
|
||||||
|
|
||||||
|
validate :repo_name
|
||||||
|
|
||||||
after_destroy :destroy_gitosis_project
|
after_destroy :destroy_gitosis_project
|
||||||
after_save :update_gitosis_project
|
after_save :update_gitosis_project
|
||||||
|
|
||||||
|
@ -168,6 +170,12 @@ class Project < ActiveRecord::Base
|
||||||
errors[:base] << ("Cant check your ability to create project")
|
errors[:base] << ("Cant check your ability to create project")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def repo_name
|
||||||
|
if path == "gitosis-admin"
|
||||||
|
errors.add(:path, "Project path like 'gitosis-admin' is not allowed")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def valid_repo?
|
def valid_repo?
|
||||||
repo
|
repo
|
||||||
rescue
|
rescue
|
||||||
|
|
|
@ -1,27 +1,5 @@
|
||||||
.file_stats
|
.file_stats= render "commits/diff_head"
|
||||||
- @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"
|
|
||||||
- @commit.diffs.each do |diff|
|
- @commit.diffs.each do |diff|
|
||||||
- next if diff.diff.empty?
|
- next if diff.diff.empty?
|
||||||
- file = (@commit.tree / diff.b_path)
|
- file = (@commit.tree / diff.b_path)
|
||||||
|
@ -36,20 +14,7 @@
|
||||||
%br/
|
%br/
|
||||||
.diff_file_content
|
.diff_file_content
|
||||||
- if file.text?
|
- if file.text?
|
||||||
- lines_arr = diff.diff.lines.to_a
|
= render :partial => "commits/text_file", :locals => { :diff => diff }
|
||||||
- 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
|
|
||||||
- elsif file.image?
|
- elsif file.image?
|
||||||
.diff_file_content_image
|
.diff_file_content_image
|
||||||
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
|
%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
|
describe "Associations" do
|
||||||
it { should have_many(:users) }
|
it { should have_many(:users) }
|
||||||
it { should have_many(:users_projects) }
|
it { should have_many(:users_projects) }
|
||||||
|
it { should have_many(:issues) }
|
||||||
|
it { should have_many(:notes) }
|
||||||
|
it { should have_many(:snippets) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "Validation" do
|
describe "Validation" do
|
||||||
it { should validate_presence_of(:name) }
|
it { should validate_presence_of(:name) }
|
||||||
it { should validate_presence_of(:path) }
|
it { should validate_presence_of(:path) }
|
||||||
|
it { should validate_presence_of(:code) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "Respond to" do
|
describe "Respond to" do
|
||||||
|
@ -31,6 +35,11 @@ describe Project do
|
||||||
it { should respond_to(:commit) }
|
it { should respond_to(:commit) }
|
||||||
end
|
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
|
it "should return valid url to repo" do
|
||||||
project = Project.new(:path => "somewhere")
|
project = Project.new(:path => "somewhere")
|
||||||
project.url_to_repo.should == "git@localhost:somewhere.git"
|
project.url_to_repo.should == "git@localhost:somewhere.git"
|
||||||
|
|
Loading…
Reference in a new issue