summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-10-21 21:40:36 +0300
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-10-22 14:08:03 +0300
commitc62ba2d96f4b6c03f6294fd63f755b059f507fe5 (patch)
tree37c77036ac3877068e26b94beda075c2f41de9dc
parentb745e59b366970b2ea27b5cff4c754f7613ba66c (diff)
downloadgitlab-ce-c62ba2d96f4b6c03f6294fd63f755b059f507fe5.tar.gz
fix #140, commit lil refactor
-rw-r--r--app/models/project.rb8
-rw-r--r--app/views/commits/_diff.html.haml41
-rw-r--r--app/views/commits/_diff_head.html.haml24
-rw-r--r--app/views/commits/_text_file.html.haml15
-rw-r--r--spec/models/project_spec.rb9
5 files changed, 59 insertions, 38 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index d70b18e7934..1dd04e1fcb6 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -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
diff --git a/app/views/commits/_diff.html.haml b/app/views/commits/_diff.html.haml
index c88e54307e9..2807e0903da 100644
--- a/app/views/commits/_diff.html.haml
+++ b/app/views/commits/_diff.html.haml
@@ -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)}"}
diff --git a/app/views/commits/_diff_head.html.haml b/app/views/commits/_diff_head.html.haml
new file mode 100644
index 00000000000..922c35990af
--- /dev/null
+++ b/app/views/commits/_diff_head.html.haml
@@ -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"
+
diff --git a/app/views/commits/_text_file.html.haml b/app/views/commits/_text_file.html.haml
new file mode 100644
index 00000000000..b20aa8afe40
--- /dev/null
+++ b/app/views/commits/_text_file.html.haml
@@ -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
+
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 6ed8653d761..0c62743d8e8 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -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"